密码学

对称加密

对称加密算法的加密和解密使用的密匙是相同的,也就是说如果通讯两方如果使用对称加密算法来加密通讯数据,那么通讯双方就需要都知道这个密匙,收到通讯数据后用这个密匙来解密数据。

这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与非对称加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。常见的对称加密算法有 DES、3DES、AES、Blowfish、IDEA、RC5、RC6

对称加密的速度比公钥加密快很多,在很多场合都需要对称加密

非对称加密

它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;

虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为 公钥,任意向外发布;不公开的密钥为 私钥 ,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任。

公钥 & 私钥 均可以作为加密密钥

数字签名

数字签名是一种类似写在纸上的签名,但是使用了 公钥加密领域的技术实现 ,用于鉴别数字信息的方法。在网络上,我们可以使用“数字签名”来进行身份确认。数字签名是一个独一无二的数值,若公钥能通过验证,那我们就能确定对应的公钥的正确性,数字签名兼具这两种双重属性:”可确认性”及”不可否认性(不需要笔迹专家验证)”。

数字签名就是将公钥密码反过来使用。签名者将讯息用私钥加密(这是一种反用,因为通常非对称加密中私钥用于解密),然后公布公钥;验证者使用公钥将加密讯息解密并比对消息(一般签名对象为消息的散列值)。

密码散列函数

密码散列函数(英语:Cryptographic hash function),又译为加密散列函数、密码散列函数、加密散列函数,是散列函数的一种。它被认为是一种 单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这种散列函数的输入数据,通常被称为消息( message ),而它的输出结果,经常被称为消息摘要( message digest )或摘要( digest )。