加密分为三种:

对称加密(symmetric),例如:AES、DES等

对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥时也可以从加密密钥中推算出来。

在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信安全性至关重要。

非对称加密(asymmetric),例如:RSA、DSA等

非对称加密最常用的就是RSA和DSA。

非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。根据应用的不同,我们可以选择使用不同的密钥加密;

  1. 签名:使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。
  2. 加密:用公钥加密,私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。

为了方便,我们针对最常用的RSA算法构建了单独的对象:RSA。

摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

摘要算法是一种能产生特殊输出格式的算法,这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定产的长度的。

这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切的联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。

但是由于输出的密文是提取数据经过处理的定长值,所以它已经不能还原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能采用来做数据完整性验证。

消息认证算法-HMac

HMAC,全称为"Hash Message Authentication Code", 中文名“散列消息鉴别码”,主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

一般的,消息鉴别码用于验证传输于两个共同享有一个密钥的单位之间的消息。HMAC可以与任何迭代散列函数捆绑使用。MD5和SHA-1就是这种散列函数。HMAC还可以使用一个用于计算和确认消息鉴别值得密钥。