纯python gost加密函数库

pygost的Python项目详细描述


纯python 2.7/3.x gost加密函数库。

GOST是俄罗斯联邦(和苏联)的政府标准。

  • GOST 28147-89(RFC 5830)带ECB、CNT(CTR)、CFB、MAC的分组密码 CBC(RFC 4357)操作模式
  • 包括各种28147-89相关S盒
  • GOST R 34.11-94哈希函数(RFC 5831)
  • 基于GOST R 34.11-94的PBKDF2函数
  • GOST R 34.11-2012《哈希函数》(RFC 6986)
  • 基于GOST R 34.11-2012的PBKDF2函数(P 50.1.111-2016)
  • GOST R 34.10-2001(RFC 5832)公钥签名功能
  • GOST R 34.10-2012(RFC 7091)公钥签名功能
  • 包括各种34.10曲线参数
  • 从扭曲爱德华兹到魏尔斯特拉斯形式的坐标转换 反之亦然
  • VKO GOST R 34.10-2001关键协议功能(RFC 4357)
  • VKO GOST R 34.10-2012关键协议功能(RFC 7836)
  • 28147-89和CryptoPro密钥包装(RFC 4357)
  • 28147-89用于循环流化床和CBC模式的CryptoPro密钥网格划分(RFC 4357)
  • RFC4491(使用GOST算法和X.509)兼容性帮助程序
  • GOST R 34.12-2015 128位分组密码(Kuznechik)(RFC 7801)
  • GOST R 34.12-2015 64位分组密码(magma)
  • GOST R 34.13-2015填充方法和分组密码操作模式 (中央银行、中央银行、海外银行、中央银行、循环流化床、mac)
  • pep247兼容的hash/mac函数

已知问题:低性能和非时间常数计算。

示例34.10-2012密钥对生成、签名和验证:

>>> from pygost.gost3410 import CURVES
>>> curve = CURVES["id-tc26-gost-3410-12-512-paramSetA"]
>>> from os import urandom
>>> prv_raw = urandom(32)
>>> from pygost.gost3410 import prv_unmarshal
>>> prv = prv_unmarshal(prv_raw)
>>> from pygost.gost3410 import public_key
>>> pub = public_key(curve, prv)
>>> from pygost.gost3410 import pub_marshal
>>> from pygost.utils import hexenc
>>> print "Public key is:", hexenc(pub_marshal(pub))
>>> from pygost import gost34112012256
>>> data_for_signing = b"some data"
>>> dgst = gost34112012256.new(data_for_signing).digest()
>>> from pygost.gost3410 import sign
>>> signature = sign(curve, prv, dgst, mode=2012)
>>> from pygost.gost3410 import verify
>>> verify(curve, pub, dgst, signature, mode=2012)
True

其他例子可以在docstrings和unittests中找到

pygost是免费软件:有关复制条件,请参见文件复制。

pygost的主页是:http://pygost.cypherpunks.ru/ 您可以阅读更多关于gost算法的信息:http://gost.cypherpunks.ru/

请将问题、错误报告和修补程序发送到 https://lists.cypherpunks.ru/mailman/listinfo/gost 邮件列表。公告也会转到此邮件列表

开发git源代码存储库当前位于以下位置: https://git.cypherpunks.ru/cgit.cgi/pygost.git/

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

推荐PyPI第三方库


热门话题
由于java的原因,maven无法运行代码。lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge   Android项目中的java Creative SDK图像编辑器UI   java如何在Android Studio中使用DataOutputStream上传文件并将其他参数传递到web服务器   java倒计时服务打开时崩溃   java将RubyonRails项目转换为JRubyonRails项目   java我的图库意图是不显示图像?为什么?   java如何在春季启动时跳过mongodb/   java@Autowired在Spring中是如何实现的   甲骨文Akka java。util。同时发生的timeoutexception线程池频繁超时   java maven依赖项对spring启动应用程序有何影响?   java Firestore执行复合查询,未截获事件“已修改”   java ItemStreamException:未能初始化读取器,原因是:IllegalStateException:流已初始化。重新开放前关闭   java将空标记解组到集合的新实例中   使用AspectJ的java新手:无法调用aspect   java查找棋类游戏的所有组合   你为什么要这样做and==与Java中的equals方法不一样吗?   如何对使用JavaUUID的代码进行单元测试?