自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 1717 4

原创 国密算法 SM9 公钥加密 数字签名 密钥交换 基于身份的密码算法(IBC)完整高效的开源python代码

不像SM2、SM3、SM4、ZUC对着国标或教材的算法描述就能实现,SM9涉及的数学基础要厚实得多,把图书馆里椭圆曲线的书都借遍了,它们和国标描述差不多,数学上都是那么几条式子,可这其中暗藏着巨大的知识鸿沟,让我对代码实现一时无从下手。虽然和代码①实现的结果不一样,但手头也只有这一个Python的原生实现,但还是比较一下。

2023-10-26 21:30:21 3142 2

原创 国密算法 SM2 公钥加密 数字签名 密钥交换 更高效、依赖更少的开源python代码

当然,前版SM2代码虽然效率上来了,但对Crypto库的引用比较复杂,甚至还需要特定Crypto库版本,代码写得不完善,各种环境下的测试不够,导致小伙伴们各种报错调不通代码。” 华为的5G芯片都出来了👍,密码算法也没那么难写的,争取早日拿下SM9!

2023-09-18 19:48:26 1159

原创 国密算法 SM2 公钥加密 数字签名 密钥交换 全网最高效的开源python代码

国密算法 SM2 公钥加密 数字签名 密钥交换 全网最高效的开源python代码 采用预计算技术加速椭圆曲线基点点乘,SM2基点点乘效率追平PyCryptodome库的ECC-256

2022-07-12 11:36:55 3158 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 6354 2

原创 国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现

国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现 效率高于所有公开的python国密算法库

2022-04-06 10:08:21 10159 10

原创 国密算法 SM3 消息摘要 杂凑算法 哈希函数 散列函数 python实现完整代码

国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完整代码依次分享完SM2和SM4的python实现代码,今天分享SM3

2022-03-24 15:48:33 10864 8

原创 国密算法 SM4 对称加密 分组密码 python实现完整代码

国密算法 SM4 对称加密 分组密码 python实现完整代码高效实现 效率超越现有python库

2022-03-20 10:59:03 14112 6

原创 国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完整代码

国密SM2算法的Python工具包,实现SM2数字签名与验证、公钥加解密以及密钥协商等功能,也可基于本工具包提供的椭圆曲线运算相关函数自行设计算法和协议。代码完整,复制即用。

2022-03-02 09:58:54 15729 18

原创 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 295 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 119

原创 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 516

原创 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 671

原创 判断Python版本

不同的py版本运行的代码会有差别,尤其是当一份代码要同时在py2和py3运行的时候,坑很多,首先需要判断Python版本import sysif sys.version_info > (3, 0): from functools import reduce # 举个例子py3不再内置reduce,用到的话需要这一行...

2021-09-21 22:06:48 417

原创 Python 判断操作系统类型

因为有库和函数是针对特定操作系统的,如果要一个代码文件适配多种系统,就需要判断一下操作系统类型。import platformSYSTEM_PLATFORM = platform.system()if SYSTEM_PLATFORM == 'Linux': # 处理逻辑

2021-09-21 21:58:25 1608

原创 Python 获取格式化的日期时间

import timedef get_datetime(): return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

2021-09-21 21:55:43 130

原创 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 350

原创 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 541

原创 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 1200

原创 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 121

原创 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 406

原创 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 284

原创 Python md5

py3输入输出为bytes类型import hashlibdef md5_bin(data): md5 = hashlib.md5() md5.update(data) return md5.digest()

2021-09-20 11:32:27 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除