一、加密
加密运算需要两个输入:密钥和明文
解密运算也需要两个输入:密钥和密文
密文通常看起来都是晦涩难懂、毫无逻辑的,所以我们一般会通过传输或者存储密文来保护私密数据,当然,这建立在一个基础上,那就是只有经过授权的人或者机器,才能够通过密文计算出明文
那经过授权的人或者机器,是如何通过密文计算出明文的?密钥
你可能会觉得,密钥太重要了!但现代密码学之前的加密,并不涉及密钥,加密数据的安全性完全依赖于加密算法的保密性,一旦算法被破解,密文也就被破解了,虽然算法保密看起来很安全,但算法质量是令人担忧的,到了现代密码学,加密数据的安全性依赖于加密算法的质量和密钥的保密性这两个因素,密钥是私有部分,需要严格保密,算法是公开的,为什么算法一定要公开?为了让你更直观地了解使用公开算法的重要性,我们一起来看看公开算法的遴选过程
你看,仅单向散列函数的遴选,就用时 7 年,期间还聚集了世界上最出色的密码学专家,如果一个算法在接受了公开的分析、评测和各种攻击之后,依然被认为是安全的,我们才能说这个算法的质量是经得起考验的,也才能放心使用
现代密码学的加密数据安全性,是基于密钥保密,而非加密算法保密,使用公开的加密算法是密码学领域的一个基本常识
二、密钥
1、对称密钥
加解密使用相同的密钥
说起对称密钥,就不得不提它的对立面,非对称密钥,1976 年,惠特菲尔德·迪菲(Whitfield Diffie)、马丁·赫尔曼(Martin Hellman)发表了基于非对称密钥技术的密钥交换算法,但在这之前,并没有对称密钥、非对称密钥的说法
2、非对称密钥
加解密使用不同的密钥