常见密码算法计算
2022-12-16 10:14:24 0 举报
AI智能生成
常见密码算法计算
作者其他创作
大纲/内容
该计算方法用于RSA公私钥生成,其中P、Q为两个大素数,E为公钥,D为私钥。
解 释:
1、选择两个随机的大素数P、Q,并计算φ(N)=(P-1)(Q-1)
3、根据公式E*D mod φ(N) =1,且1<D<φ(N),求D
计算过程:
1、选择P=3、Q=11,则φ(N)=(P-1)(Q-1)=2*10=20
2、选择E=3
实 例:
RSA:公私钥生成
2、对消息进行杂凑计算,Z=H(M)
3、签名:S=Z^D mod N
4、验证:Z'=S^E mod N
5、比较Z'=Z,验证签名
2、假设消息M的杂凑值Z=H(M)=13
3、签名:S=Z^D mod N=13^7 mod 33=7
4、验证:Z'=S^E mod N=7^3 mod 33=13
5、Z'=Z=13,验证成功
RSA:签名和验证
这里根据实际应用情况,对消息的杂凑值进行签名和验证
2、加密:密文C=M^E mod N
3、解密:明文M'=C^D mod N
4、比较M'=M,验证结果
2、加密:密文C=M^E mod N=13^3 mod 33=19
3、解密:明文M'=C^D mod N=19^7 mod 33=13
4、比较,M'=M,解密成功
RSA:加密和解密
通信双方仅通过交换一些可以公开的信息就能够生成出对称密钥。
1、通信双方Alice、Bob 中的任意一方生成两个素数P、G,并发送给对方
2、Alice生成一个1~P-2 之间随机数A,并计算G^A%P发送给Bob
3、Bob生成一个1~P-2 之间随机数B,并计算G^B%P发送给Alice
4、Alice计算的对称密钥=(G^B%P)^A%P=G^(A*B)%P , Bob计算的对称密钥=(G^A%P)^B%P=G^(A*B)%P ,公式相同
1、P=23、G=5
2、A=6,则G^A%P=5^6%23=8
3、B=15,则G^B%P=5^15%23=19
4、对称密钥=G^(A*B)%P =5^(6*15)%23=2
DH密钥协商
1、随机产生一个秘密变量dA,1<d<n-2
SM2:公私钥生成
1)ZA=SM3(ENTLA || IDA || a || b || xG || yG|| xA || yA)
2)杂凑值e=SM3(ZA || M)
3)签名者选取随机数k,k满足1<k<n-1
5)计算r=(e+x1) mod n,若r=0或r+k=n,则重新选取随机数k
6)计算s = (1 + dA)^(-1)(k - r*dA) mod n,若s=0,则重新选取随机数k
7)组合r和s成签名值
1、签名流程
签名
1)1<r<n-1、1<s<n-1且r+s≠n
3)ZA=SM3(ENTLA || IDA || a || b || xG || yG|| xA || yA)
4)杂凑值e'=SM3(ZA || M')
5)计算r'=(e'+x'1) mod n,若r'=r,则签名验证通过
2、验证流程
验证
SM2:签名和验证
在对称加算法的分组加密模式中,要求明文必须是加密块的整数倍,这就要求必须对明文进行填充。备注:对密钥的填充都按照密钥长度采用Zero填充。
1、Zero:先获取需要填充的字节长度 = (块长度 – (数据长度 % 块长度)),再填充字节序列中所有字节填充为0x00
3、PKCS7/PKCS5:在填充时首先获取需要填充的字节长度 = (块长度 – (数据长度 % 块长度)),在填充字节序列中所有字节填充为需要填充的字节长度值。
4、ISO10126:在填充时首先获取需要填充的字节长度 = (块长度 – (数据长度 % 块长度)),在填充字节序列中最后一个字节填充为需要填充的字节长度值,填充字节中其余字节均填充随机数值。
填充方式:
对称算法填充方式
常见密码算法计算
0 条评论
回复 删除
下一页