之前一篇文章讲过古典密码学。
这篇文章我们来聊一下对称加密(Symmetric Encryption)。
这个名字其实有点唬人,简单说就是只需要一把钥匙可以用来把文件加密,然后解密也是同一把钥匙。
比如说我们要对PDF进行加密,那就会有需要同一个密码进行打开,如果没有这个密码,你就看不了里面的内容。
文件加密之后我们就可以把文件存在一些公开的网盘里面,或者分享给其他人,然后别人通过密码就可以看了,如果没有密码,就算别人得到文件也无法知晓里面的内容。
Blocker Cipher(块加密)
一个文件可能很大,所以密码学上一般会把内容进行固定长度的切割,然后一块内容一块内容进行加密,这个就是块加密,与之对应的就是流加密(Steam Cipher)。
DES(Data Encryption Standard)
DES(Data Encryption Standard), 它1977年成为标准。这个名字看起来很高级,其实现在已经不用了,甚至说禁止使用,因为随着计算机算力的不断发展,它56位的密码长度很容易就被爆破出来(Brute Force),1999年就被爆破了,但在一段时间之内,它就是标准的密码加密算法。
- https://en.wikipedia.org/wiki/Data_Encryption_Standard
它的流程如下图,基于Feistel Network结构,16轮运算,Block Size 64位,分为左右各32位,然后进行16轮运算,每轮运算就都使用不同的密码(KDF,随称密钥派生, Key Derivation Function),最后输出同等长度的64位密文。

后面还有3DES, 就是进过三轮DES加密,因为密码长度始终只有56位,所以也被淘汰了。
这样就不得不寻求新的加密方式
AES(Advanced Encryption Standard)
随着DES的安全性越来越弱,美国NIST在1997年发起了新的加密算法的竞算,经过多轮挑战,最终Rijndael算法被选自AES标准。
- https://en.wikipedia.org/wiki/Advanced_Encryption_Standard_process

所以在2001年,Rijndael被当做标准,成为AES算法,这里有当年AES成为标准的提案。
最终选取
- Block size: 128位






