纯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/