最近需要使用python 版本的国密算法,查找了很多资料都不如意,自己使用三方库,做了整合,希望大家可以用到 description:_alg文件 是bytes操作,_apply文件 是对str的操作 最小集合如下: 引用了 gmssl 和 cryptography 两个库。 pip install gmssl pip install cryptography pip install pycryptodomex 主要是gmssl实现的比较少,且缺少了sm2密钥的生成,也可以完全由cryptography实现,但是cryptography不支持sm2算法 所以部分引用了cryptography,也可以完全引用cryptography库,但这个库不是国内的。 使用了pycryptodomex 库的填充 随机数:gen_random 完整性: sm3_hmac,注意sm3不能单独使用,也不能单独保证完整性,因为里面没有密钥,算法是公开的,大家都可以计算 加解密:sm4_cbc_encrypt,sm4_cbc_decrypt, 文件加解密:file_encrypt_sm4,file_decrypt_sm4 ,使用默认模式CBC,mode不传 如果想更高效率的算法可以选择CTR模式,但是国密算法,当前的cpu一般都不能加速,所以速度提升有限。2G左右的文件, CTR更快,估计差距也就2秒左右。 本次提供密码三级的最小集合,对称加密sm4_cbc,摘要算法sm3,消息验证码hmac-sm3,随机数random FPE_FF3 保留格式加密,主要用于手机号,身份证号,银行卡号等的加密,避免加密后索引变大影响效率 gen_otp 使用sm3 实现了动态口令 ================================================================================= 非必要不要使用sm2算法,对多数人还是复杂了一些,如果不是分发密钥,或者在client 就必须要求对某些数据加密,且要求在在client端(比如你的电脑)提交时就必须看到时密文,还是不要使用js的 sm2公钥加密,意义不大。 sm2_genkey 有生成sm2的算法实现,使用了一些网络大神的实现,非常感谢! sm.py 中实现了数字信封,sm2的加密,解密,签名验签等 sm2_pem 密钥从str 转为pem ,从pem转为str
最小集国密算法
于 2024-11-18 15:27:56 首次发布
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Python3.11
Conda
Python
Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本
1609

被折叠的 条评论
为什么被折叠?



