2015年04月16日

时间:2021-05-11 11:43:48

前一段时间看了这篇文章,感觉挺不错的,就分享给大家了,希望大家也能了解一下加密机制。


加密算法

数据加密算法有对称加密、非对称加密和信息摘要三类。

对称加密是使用单个密钥对数据进行加密和解密。有DES、AES、RC-5等算法。

非对称加密是使用一对密钥(公钥和私钥)对数据进行加密和解密。有RSA、ECC等算法。非对称加密大概比对称加密慢100倍以上。

通常的用法如下:

  1. 使用公钥加密数据,使用私钥解密数据。
  2. 使用私钥签名数据,使用公钥验证签名。

信息摘要如果也算加密算法的话,它的加密过程不需要密钥,并且经过加密的数据无法被解密,它是根据不定长的明文计算得到一段定长的数据。有MD5、SHA1等算法。

密钥规范

规范太多,网上讲得很乱,挑常用的按我的理解列一下。

密钥格式:

  1. X.509:通用的证书格式,包括公钥信息、用户标识、签发信息等。
  2. PKCS系统标准:美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准。其中PKCS#8描述私有密钥的信息格式,包括私钥及可选的属性集等。

密钥存储:

  1. DER:二进制编码。
  2. PEM:ASCII编码。

加密模式

块密码自身只能加密长度等于密码块长度的单块数据,若要对变长数据进行加密,则必须事先将数据进行切分,而且最后一个数据块需要适当的填充方式扩展到密码块的长度。加密模式即块密码的工作模式,就是使用这些方式用同一个密钥对多于一块的数据进行加密。

加密模式通常用于对称加密,也可以用于非对称加密。但非对称加密通常不适合加密较长的信息,所以会使用混合加密代替。

ps:以RSA和DES为例,混合加密通常使用DES先加密明文,再使用RSA的公钥加密DES的密钥,再将2个密文一起传递出去。接收方使用RSA的私钥解密DES的密钥信息,再使用DES的密钥解密具体内容。

最简单的加密模式是ECB(即电子密码本)。其他还有CBC、PCBC、CFB等。

ECB和CBC需要对最后一块进行填充,填充方法有很多种,最简单的是先在明文的最后填充空字符,使明文长度为密码块长度的整数倍。