前一段时间看了这篇文章,感觉挺不错的,就分享给大家了,希望大家也能了解一下加密机制。
加密算法
数据加密算法有对称加密、非对称加密和信息摘要三类。
对称加密是使用单个密钥对数据进行加密和解密。有DES、AES、RC-5等算法。
非对称加密是使用一对密钥(公钥和私钥)对数据进行加密和解密。有RSA、ECC等算法。非对称加密大概比对称加密慢100倍以上。
通常的用法如下:
- 使用公钥加密数据,使用私钥解密数据。
- 使用私钥签名数据,使用公钥验证签名。
信息摘要如果也算加密算法的话,它的加密过程不需要密钥,并且经过加密的数据无法被解密,它是根据不定长的明文计算得到一段定长的数据。有MD5、SHA1等算法。
密钥规范
规范太多,网上讲得很乱,挑常用的按我的理解列一下。
密钥格式:
- X.509:通用的证书格式,包括公钥信息、用户标识、签发信息等。
- PKCS系统标准:美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准。其中PKCS#8描述私有密钥的信息格式,包括私钥及可选的属性集等。
密钥存储:
- DER:二进制编码。
- PEM:ASCII编码。
加密模式
块密码自身只能加密长度等于密码块长度的单块数据,若要对变长数据进行加密,则必须事先将数据进行切分,而且最后一个数据块需要适当的填充方式扩展到密码块的长度。加密模式即块密码的工作模式,就是使用这些方式用同一个密钥对多于一块的数据进行加密。
加密模式通常用于对称加密,也可以用于非对称加密。但非对称加密通常不适合加密较长的信息,所以会使用混合加密代替。
ps:以RSA和DES为例,混合加密通常使用DES先加密明文,再使用RSA的公钥加密DES的密钥,再将2个密文一起传递出去。接收方使用RSA的私钥解密DES的密钥信息,再使用DES的密钥解密具体内容。
最简单的加密模式是ECB(即电子密码本)。其他还有CBC、PCBC、CFB等。
ECB和CBC需要对最后一块进行填充,填充方法有很多种,最简单的是先在明文的最后填充空字符,使明文长度为密码块长度的整数倍。