- 博客(23)
- 收藏
- 关注
原创 国密算法 SM9 公钥加密 数字签名 密钥交换 基于身份的密码算法(IBC)高效python代码
上篇SM9代码虽然集成了若干关于效率优化的文献研究成果,但毕竟是纯Python实现的,我还是放在了慢速版(/slow目录下),这显然是给自己挖了坑。出于个人研究学习的兴趣,纰漏在所难免,可继续改进提升的地方还很多,望各位不吝赐教,我会持续更新优化。SM9的两个椭圆曲线群G1、G2的生成元分别是P1、P2,还有用户签名私钥ds,算法中多次出现与这些固定点的点乘运算(k·P),类似SM2,可提前计算好k的每一个字节位置与P相乘的结果并保存,后续点乘运算则转变为31次点加法。但愿这不止是完结,而是全新的开始。
2023-11-11 13:10:15
1789
5
原创 国密算法 SM9 公钥加密 数字签名 密钥交换 基于身份的密码算法(IBC)完整高效的开源python代码
不像SM2、SM3、SM4、ZUC对着国标或教材的算法描述就能实现,SM9涉及的数学基础要厚实得多,把图书馆里椭圆曲线的书都借遍了,它们和国标描述差不多,数学上都是那么几条式子,可这其中暗藏着巨大的知识鸿沟,让我对代码实现一时无从下手。虽然和代码①实现的结果不一样,但手头也只有这一个Python的原生实现,但还是比较一下。
2023-10-26 21:30:21
3264
2
原创 国密算法 SM2 公钥加密 数字签名 密钥交换 更高效、依赖更少的开源python代码
当然,前版SM2代码虽然效率上来了,但对Crypto库的引用比较复杂,甚至还需要特定Crypto库版本,代码写得不完善,各种环境下的测试不够,导致小伙伴们各种报错调不通代码。” 华为的5G芯片都出来了👍,密码算法也没那么难写的,争取早日拿下SM9!
2023-09-18 19:48:26
1194
原创 国密算法 SM2 公钥加密 数字签名 密钥交换 全网最高效的开源python代码
国密算法 SM2 公钥加密 数字签名 密钥交换 全网最高效的开源python代码 采用预计算技术加速椭圆曲线基点点乘,SM2基点点乘效率追平PyCryptodome库的ECC-256
2022-07-12 11:36:55
3215
9
原创 国密算法 ZUC流密码 祖冲之密码 python代码完整实现
此前发布了包含SM2公钥密码、SM3杂凑算法和SM4分组密码的国密算法完整工具包,还是有些不完整,因为没有流密码。今天把我们自己的流密码——ZUC祖冲之密码补充上。其他国密算法如下:SM2:国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完整代码_qq_43339242的博客-CSDN博客_python国密sm2SM3:国密算法 SM3 消息摘要 杂凑算法 哈希函数 散列函数 python实现完整代码_qq_43339242的博客-CSDN博客SM4:国密算法 SM4
2022-04-16 14:23:58
6397
2
原创 国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现
国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现 效率高于所有公开的python国密算法库
2022-04-06 10:08:21
10283
10
原创 国密算法 SM3 消息摘要 杂凑算法 哈希函数 散列函数 python实现完整代码
国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完整代码依次分享完SM2和SM4的python实现代码,今天分享SM3
2022-03-24 15:48:33
10942
8
原创 国密算法 SM4 对称加密 分组密码 python实现完整代码
国密算法 SM4 对称加密 分组密码 python实现完整代码高效实现 效率超越现有python库
2022-03-20 10:59:03
14244
6
原创 国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完整代码
国密SM2算法的Python工具包,实现SM2数字签名与验证、公钥加解密以及密钥协商等功能,也可基于本工具包提供的椭圆曲线运算相关函数自行设计算法和协议。代码完整,复制即用。
2022-03-02 09:58:54
15996
19
原创 Python AES加密
封装了一个AES加解密(电码本ECB模式)的类from Crypto.Cipher import AESimport hashlibimport base64import sysif sys.version_info > (3, 0): pad = lambda s, n: s + bytes(n * [n]) unpad = lambda s: s[0:-s[-1]]else: # py2没有bytes类型 pad = lambda s, n: s + n
2021-09-21 23:30:35
305
1
原创 Python pickle序列化
import pickle# 序列化(python2与python3兼容)def pickle_dump(data): return pickle.dumps(data, protocol=2)# 反序列化(python2与python3兼容)def pickle_load(data): return pickle.loads(data, encoding='utf-8')
2021-09-21 23:23:09
131
原创 Python 判断素数、生成安全素数
import randomsmall_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 1.
2021-09-21 23:05:09
534
原创 Python IP地址相关的判断
点分十进制IP地址转intimport sysif sys.version_info > (3, 0): from functools import reduce# 点分十进制IP地址转intdef ip_into_int(ip): return reduce(lambda x,y:(x<<8)+y,map(int,ip.split('.')))获取本机IP(点分十进制)import sysimport socket# 操作系统类型SYSTE
2021-09-21 22:46:05
685
原创 判断Python版本
不同的py版本运行的代码会有差别,尤其是当一份代码要同时在py2和py3运行的时候,坑很多,首先需要判断Python版本import sysif sys.version_info > (3, 0): from functools import reduce # 举个例子py3不再内置reduce,用到的话需要这一行...
2021-09-21 22:06:48
430
原创 Python 判断操作系统类型
因为有库和函数是针对特定操作系统的,如果要一个代码文件适配多种系统,就需要判断一下操作系统类型。import platformSYSTEM_PLATFORM = platform.system()if SYSTEM_PLATFORM == 'Linux': # 处理逻辑
2021-09-21 21:58:25
1621
原创 Python 获取格式化的日期时间
import timedef get_datetime(): return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
2021-09-21 21:55:43
135
原创 Python 用openpyxl库实现将实验数据自动生成excel
从控制台一个个复制粘贴输出数据到excel是不是很麻烦?代码稍作改动,openpyxl帮你减掉工作量。每多写一行代码,就少一些低效运算。每多学一点知识,就少写一行代码!看例子!import openpyxlimport timeimport numpyif __name__ == "__main__": TEST_TIME = 20 wb = openpyxl.Workbook() # 创建excel对象,可以理解为一个excel文件 sheet = w
2021-09-20 13:25:28
357
原创 Python 生成随机文件
import randomdef create_random_file(filename, filesize): with open(filename, 'wb') as f: f.write(os.urandom(filesize))如果传入的filename没有指定路径,则存放在py代码所在的目录
2021-09-20 13:03:00
544
原创 Python3 int和bytes类型互转
# 将字节转换为intdef to_int(byte): return int.from_bytes(byte, byteorder='big')# int转换为bytes,第二参数为位长def to_byte(num, bits=None): if bits is None: bits = 1024 # 给一个默认的的位长 return num.to_bytes(bits // 8, byteorder='big') # to_bytes函数第一个参数为.
2021-09-20 12:58:07
1217
原创 Python 伪随机乱序
以种子k打乱0到n-1之间的整数或列表import randomdef prf_shuffle(k, n): # n可以是整数(0 ~ n-1)也可以是列表 if type(n) is int: n = list(range(n)) random.seed(k) random.shuffle(n) return n
2021-09-20 12:51:55
132
原创 Python 生成伪随机数
伪随机函数,返回int类型import randomdef prf_r(k, bits_len=None): # k是伪随机种子 if bits_len is None: bits_len = 1024 # 自定义默认长度 random.seed(k) return random.getrandbits(bits_len)
2021-09-20 12:38:29
419
原创 Python 返回int类型随机字节
返回指定位数的int类型随机字节import randomdef get_rand_bits(bits_len=None): if bits_len is None: bits_len = 1024 #自定义一个默认长度 return random.getrandbits(bits_len)
2021-09-20 12:35:30
298
原创 Python md5
py3输入输出为bytes类型import hashlibdef md5_bin(data): md5 = hashlib.md5() md5.update(data) return md5.digest()
2021-09-20 11:32:27
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人