1.两种算法的子类别
对称加密和非对称加密都有分国际算法和国密算法。
对称加密:DES(国际算法), SM4(国密算法)
非对称加密:RSA(国际算法),SM2(国密算法)
2.RSA加密过程
![](https://i-blog.csdnimg.cn/blog_migrate/da167df648c8cca913bd63e5fe6b1a1d.jpeg)
实例描述:
1)设若甲有一份需保密的数字商业合同发给乙签署。经过如下步骤:
1. 甲用乙的公钥对合同加密。
2. 密文从甲发送到乙。
3. 乙收到密文,并用自己的私钥对其解密。
4. 解密正确,经阅读,乙用自己的私钥对合同进行签署。
5. 乙用甲的公钥对已经签署的合同进行加密。
6. 乙将密文发给甲。
7. 甲用自己的私钥将已签署合同解密。
8. 解密正确,确认签署。
2)在这篇科普小文章里,不可能对RSA算法的正确性作严格的数学证明,但我们可以通过一个简单的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:
(1)设计公私密钥(e,n)和(d,n)。
令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1 mod f(n),即3×d≡1 mod 20。
d怎样取值呢?可以用试算的办法来寻找。试算结果见下表:
通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。
(2)英文数字化。
将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:
则得到分组后的key的明文信息为:11,05,25。
(3)明文加密
用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡Me(mod n)得:
因此,得到相应的密文信息为:11,31,16。
(4)密文解密。
用户B收到密文,若将其解密,只需要计算,即:
用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。
RSA的缺点:
A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。因此,使用RSA只能加密少量数据,大量的数据加密还要靠对称密码算法。
3.DES过程(没怎么看懂,下面是摘选别人的)
![\](http://up.2cto.com/2012/0705/20120705013155190.jpg)
2)等分密钥
表1.
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 50 44 36
表2.
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
3)把在1步中生成的56位输入密钥分成均等的A,B两部分,每部分为28位,参照表1和表2把输入密钥的位值填入相应的位置. 按照表1所示A的第一位为输入的64位密钥的第57位,A的第2位为64位密钥的第49位,...,依此类推,A的最后一位最后一位是64位密钥的第36位。
4)密钥移位
表3. i 1 2 3 4 5 6 7 8
ǿ 1 1 2 2 2 2 2 2
i 9 10 11 12 13 14 15 16
ǿ 1 2 2 2 2 2 2 1
DES算法的密钥是经过16次迭代得到一组密钥的,把在1.1.2步中生成的A,B视为迭代的起始密钥,表3显示在第i次迭代时密钥循环左移的位数. 比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位.
第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位.
第一次迭代:
A(1) = ǿ(1) A
B(1) = ǿ(1) B
第i次迭代:
A(i) = ǿ(i) A(i-1)
B(i) = ǿ(i) B(i-1)