对称加密
所谓的对称加密是指在加密时使用的秘钥和解密时使用的秘钥是相同的。
1、一次性密码本
绝对不会被破译的密码
原理:将明文与一串随机的比特序列进行异或运算,生成密文。
原因:无法确定得到的明文是否是正确的明文。
2、DES
DES的基本结构是由Horst Feistel设计的,因此也成为Feistel网络。
在Feistel网络中,加密的各个步骤称为轮(round),整个加密过程就是若干次的轮的循环,DES是一种16轮循环的Feistel网络。
加密:根据上图可以看到 每一轮的处理过程分成左右两段32bit长度的明文分别处理,子秘钥通过轮函数f与后侧密文进行异或处理,再将处理结果与左侧明文进行异或处理,右侧明文则不变化,交换左侧和右侧的位置进行下一轮加密。
解密:解密时只要将加密过程从最后一轮开始倒序运行即可,原理简单,大家可以自行思考。
3、三重DES
由于DES已经能够在现实的时间内被暴力破解。所以三重DES就出现了。
3DES有两种模式 EDE和DED模式 E表示加密 D表示解密,这么设计的理由是为了兼容DES
4、AES
AES采用Rijndael分组密码算法
总结
目前推荐采用AES作为对称加密算法使用,当然也有一些别的对称加密算法供参考,Blowfish、IDEA、 skipjack
分组密码的模式
DES和AES都是分组密码,他们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就成为分组密码的模式。