常用加密算法有两类:对称加密算法和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES:数据加密标准,速度较快,适用于加密大量数据的场合。
3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
常见的非对称加密算法如下:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
ECC:椭圆曲线密码编码学。
对称密钥密码体制,对于大多数算法,解密算法是加密算法的逆运算,加密密钥和解密密钥相同,同属一类的加密体制。它保密强度高但开放性差,要求发送者和接收者在安全通信之前,需要有可靠的密钥信道传递密钥,而此密钥也必须妥善保管。
DES是对称密码算法,是美国数据加密标准,对称加密就是加密秘钥和解密秘钥相同的加密算法,DES算法的基本思想是对明文进行分组,然后利用用户秘钥对明文分组进行16轮的移位和循环移位、置换、扩展、压缩、异或等位运算,利用复杂运算把明文编码彻底打乱,从而使得加密后的密文无法破解。
DES加密算法优点是密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。缺点对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密,因此秘钥的管理与分发存在缺陷。
DES算法是一个分组加密算法,它以64位分组对数据进行加密,其初始密钥也是64位,它的加密过程可以描述如下:
①64位密钥经子密钥产生算法产生出16个子密钥:K1,K2,…K16,分别供第一次,第二次, …,第十六次加密迭代使用。
②64位明文经初始置换IP,将数据打乱重排并分成左右两半。左边为L0,右边为R0: X=L0R0=IP(x)。
③16轮轮变换,每轮(第i轮)操作如下:在轮子密钥Ki的控制下,由轮函数f对当前轮输入数据的右半部分Ri-1进行加密:第一步,将Ri-1经过E盒置换扩展成48位,第二步,将Ri-1与48位的轮子密钥Ki逐比特异或,第三步,对Ri-1进行S盒压缩代换,将其压缩为32位,第四步,对Ri-1进行P盒置换。然后,将Ri-1与当前轮输入的左半部分Li-1进行逐比特异或,将该运算结果作为当前轮(第i轮)右半部份的输出Ri=Li-1⊕f(Ri-1,Ki);将本轮输入的右半部分数据作为本轮输出的左半部分数据:Li=Ri-1。
④16轮变换结束后,交换输出数据的左右两部分:X=R16L16。
⑤经过逆初始变换IP-1输出密文。对于DES算法来说,其解密过程与加密过程是同一过程,只不过使用子密钥的顺序相反。
RSA算法安全性基于大数分解的难度。将两个大素数相乘容易,但要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数的乘积。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位,目前商用RSA算法密钥长度2048位。
RSA算法的安全性要优于对称加密算法,但因算法复杂度较高,其加密处理效率不如对称加密算法。故在网络传输重要信息时,常将两种加密算法混合使用。
RSA算法中,选择p=7,q=17,e=13,计算其公钥与私钥,并采用快速模乘(反复平方乘)方法,加密明文m=。
解:①密钥的生成:
模数n=p×q=7×17=119,f(n)=(p-1)×(q-1)=6×16=96
因为加密指数e和私密钥d满足:ed mod f(n) =1,所以d=e-1mod f(n) ,私钥d的计算过程如下
Q |
A1 |
A2 |
A3 |
B1 |
B2 |
B3 |
—— |
1 |
0 |
96 |
0 |
1 |
13 |
7 |
0 |
1 |
13 |
1 |
-7 |
5 |
2 |
1 |
-7 |
5 |
-2 |
15 |
3 |
1 |
-2 |
15 |
3 |
3 |
-22 |
2 |
1 |
3 |
-22 |
2 |
-5 |
37 |
1 |
由以上计算可知私密钥d=37。
公钥为(e,n)=(13,119),私钥为的d=37
②使用以上密钥对,采用反复平方乘方法加密明文m=(19)10,计算过程如下:
采用RSA算法加密明文,密文c=me mod n=1913 mod 119
将加密指数e=13用二进制表示:(1101)2,则有:
k |
bi |
d |
3 |
1 |
((12 mod 119) ×19)mod119 = 19 |
2 |
1 |
((192 mod 119) ×19) mod 119 = 76 |
1 |
0 |
(76)2 mod 119 = 64 |
0 |
1 |
((64)2 mod 119) ×19) mod 119 = 117 |
由以上计算可知,密文为(117)10。
换位密码(列换位)加密技术是将明文按固定长m(秘钥长度)分组,即每行m个字母,在密钥控制下排列成矩阵,最后根据秘钥的字典序按列优先的顺序依次读出,即为密文。
1.试利用换位加密技术将明文“i will go back by train tomorrow”用密钥“cable”加密,写出密文,字符之间不用空格。
2.这种加密方式有什么缺陷。
解:
替换密码定义:A和B是有 n 个字母的字母表,定义一个由A到B的映射:f:A→B
f(ai )= bi=aj
j=i+k mod n
即用明文字母在字母表中后面第 k 个字母来代替。
当 K=3 时是著名的凯撒密码,恺撒密码是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》),凯撒密码是历史上第一个密码技术。
1.请将短语“if you do not leave me i will by your side until the life end”使用凯撒密码加密,写出密文,字符之间不留空格。
2.你能再对其进行简单改进吗?写出你的算法和密文。
解: