"""
SM3是中华人民共和国政府采用的一种密码散列函数标准,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成, 可满足多种密码应用的安全需求
对长度为l(l < 2 ^ 64)
比特的消息m,SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度
为256比特。
s2m2b(s) 字符串s 转化为二进制字符串m & 数据m填充,分组b[i]
cf(v,b) CF函数实现
zy(n,k) #循环左移k%32位,共32比特
cut_text(text,lenth) #数据按间距分组
异或等基础运算
FF(x,y,z,j)
GG(x,y,z,j)
p0(x)
p1(x)
"""
import re
def cut_text(text,lenth): #数据按间距分组划分iv向量
textArr = re.findall('.{'+str(lenth)+'}', text)
textArr.append(text[(len(textArr)*lenth):])
return textArr
def zy(n,k): #循环左移k位,共32比特
k=k%32
b=str(bin(n))
b=b.split('0b')[1]
b=(32-len(b))*'0'+b
return int(b[k:]+b[:k],2)
def s2m2b(s): #字符串s 转化为二进制字符串m & 数据m填充,分组b[i]
r = ""
x = ""
for i in s:
l = 8 - len((x + bin(ord(i))).split('0b')[1]) % 8
r = r + l * '0' + (x + bin(ord(i))).split('0b')[1]
k=512-(<
SM3算法python实现
最新推荐文章于 2024-06-09 12:06:58 发布