加密算法学习
Posted quanee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密算法学习相关的知识,希望对你有一定的参考价值。
分类
常用加密算法主要分两类,即对称加密和非对称加密
对称加密算法有AES非对称加密算法有RSA和DSA(椭圆曲线)
非对称加密
RSA
步骤 | 说明 | 描述 | 备注 |
---|---|---|---|
1 | 找出质数 | P 、Q | - |
2 | 计算公共模数 | N = P * Q | - |
3 | 欧拉函数 | [φ(N) = (P-1)(Q-1)] | - |
4 | 计算公钥E | 1 < E < φ(N) | E的取值必须是整数E和 φ(N) 必须是互质数 |
5 | 计算私钥D | E * D % φ(N) = 1 | [E*D-φ(N)*Y=1] 扩展欧几里德算法 |
6 | 加密 | C = M E mod N | C:密文 M:明文 |
7 | 解密 | M =C D mod N | C:密文 M:明文 |
- 质数P=3,Q=11
- N=P*Q=3*11=33
- 欧拉函数[φ(N)=(P-1)(Q-1)=2*10=20]
- 公匙E: [1 < E < φ(N)] [E∈{3, 7, 9, 11, 13, 17, 19}], 取E=3 E与φ(N)互质
- 私匙 [E*D\%φ(N)=1 3*D\%20=1 D=7]扩展欧几里德
- 公匙加密[M=3],密文[C=M^EmodN] [C=3^3\%33=27]
- 私匙解密[M=C^DmodN] [M=27^7\%33=3]
椭圆曲线DSA
- Alice 向 Bob 发送两个质数 P 和 G
P 是一个非常大的质数,G 是一个较小的数字,称为生成元。P 和 G 可以公开,P 和 G 的生成也可以由任何一方生成。 - Alice 生成一个随机数 A
A 是 1~(P-2) 之间的整数。这个数只有 Alice 知道。 - Bob 生成一个随机数 B
B 是 1~(P-2) 之间的整数。这个数只有 Bob 知道。 - Alice 把 (G^A mod P) 的结果发送给 Bob
这个数被窃听了也没有关系。 - Bob 把 (G^B mod P) 的结果发送给 Alice
这个数被窃听了也没有关系。 - Alice 用 Bob 发过来的数计算 A 次方并求 mod P
这个数就是最终的共享密钥。
(G^B mod P)^A mod P = G^(B*A) mod P
= G^(A*B) mod P
- Bob 用 Alice 发过来的数计算 B 次方并求 mod P
这个数就是最终的共享密钥。
(G^A mod P)^B mod P = G^(A*B) mod P
至此,A 和 B 计算出来的密钥是一致的。
窃听者能获取到的信息有:P、G、G^A mod P、G^B mod P。通过这 4 个值想计算出 G^(A*B) mod P 是非常困难的。
如果能知道 A 和 B 任意一个数,就可以破解上面所有步骤,并算出最后的共享密钥。但是窃听者只能获取到 G^A mod P、G^B mod P,这里的 mod P 是关键,如果是知道 G^A 也可以算出 A,但是这里是推算不出 A 和 B 的,因为这是有限域(finite field) 上的离散对数问题
eg.
x | x |
---|---|
Alice和Bob同意使用模数[p=23]和基数[g=5](这是一个原始根模 23)。 | [p=23 g=5] |
Alice选择一个秘密整数[a=4],然后发送Bob [A=g^amodp] | [A = 5^4 mod 23 = 4] |
Bob选择一个秘密整数[b=3],然后发送Alice [B=g^bmodp] | [B = 5^3 mod 23 = 10] |
Alice计算[s=B^a mod p] | [s =10^4 mod23= 18] |
Bob计算[s=A^bmodp] | [s=4^3mod23=18] |
对称加密
AES
AES加密主要分4步
1. SubBytes 字节变换
2. ShiftRows 移行操作
3. MixColumns 混行操作
4. AddRoundKey 异或运算
解密为加密的逆过程
以上是关于加密算法学习的主要内容,如果未能解决你的问题,请参考以下文章