用于ed25519数字签名的低级cTypes包装器。

ed25519ll的Python项目详细描述


关于ED25519

ed25519是一个公钥签名系统,具有以下几个吸引人的特性 包括:

  • 快速单签名验证。
  • 签得很快。
  • 快速密钥生成。
  • 高安全级别。
  • 小签名。签名可容纳64个字节。
  • 小钥匙。公钥只占用32字节。

这篇文章是从http://ed25519.cr.yp.to/删节而来的。

关于ED25519LL

ed25519ll是ed25519公钥签名的低级包装器 系统。它使用extension()来编译不是 python扩展模块,然后使用cTypes与库对话。与 幸运的是,每次只需要编译一次ed25519ll 平台,跨python版本重用其共享库。

这个包装器目前公开了 ED25519,在我的2.6GHz Athlon上,达到7200个签名/秒/核 以及2900个验证/秒/核心,包括包装器开销。

这个包装器还包含一个性能相当好的纯python 退路。与参考实现不同,python实现 不包含对定时攻击的保护。

示例:

import ed25519ll
msg = b"The rain in Spain stays mainly on the plain"
kp = ed25519ll.crypto_sign_keypair()
signed = ed25519ll.crypto_sign(msg, kp.sk)
verified = ed25519ll.crypto_sign_open(signed, kp.vk)
assert verified == msg  # but ValueError is raised for bad signatures

API

ED25519LL相当直接地公开了Supercop-Ref10 API。所有消息和密钥 是二进制字符串(bytes()或python 2 str())。签名邮件由 与消息连接的64个签名字节。

Keypair()是验证密钥(32字节)的命名元组(vk, sk),并且 签名密钥(64字节)。签名密钥的后半部分是 正在验证密钥。

crypto_sign_keypair()返回一个新的Keypair()os.urandom()已使用 作为随机种子。这个操作和签名差不多快。

crypto_sign(msg, sk)接受一条消息(任何二进制字符串)和一个64字节 签名密钥(来自crypto_sign_keypair())并返回已签名的消息。

crypto_sign_open(signed, vk)接受已签名的消息(64字节签名+ 消息)和相应的32字节验证密钥,并返回 没有附加签名的邮件。ValueError因无效而引发 签名。

0.6

  • 包括纯python回退实现

0.5

  • 切换到cTypes以避免这样一个简单库的解析器开销

0.4

  • 再次离开ffi.verify()

0.3

  • 切换到SUPERCP-REF10
  • 切换到ffi.verify()
  • 更新以使用CFFI 0.3
  • 更新以使用python 3.3

0.2

  • 100%测试覆盖率
  • 基本文档

0.1

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误