整理一些常见的安全算法及其应用场景,以此加深理解:
- 数字摘要
- 对称加密算法
- 非对称加密算法
- 数字签名
- 数字证书
数字摘要
数字摘要也称消息摘要,他是一个唯一对应一个消息或文本固定长度的值,它由一个单向的Hash函数对消息进行计算而产生。
常见的摘要算法如:
1、MD5(Message Digest Algorithm 5)
MD5生成的摘要长度为128位,但是通常MD5的摘要会转换为16进制,即MD5生成摘要串会表示位一个32位的十六进制串。
2、SHA(Secure Hash Algorithm)
SHA-1生成的摘要长度为160位,但是通常SHA-1的摘要会转换为16进制,即SHA-1生成摘要串会表示位一个40位的十六进制串。
同等硬件条件下,SHA-1运算过程相比MD5更加复杂,速度也更慢。
3、彩虹表破解Hash算法
彩虹表(Rainbow Table)法是一种破解Hash算法的技术,原理是很简单,彩虹表就是一张用各种Hash算法生成的明文与密文关系表,当这张表足够大时,能够匹配出加密字符串对应的明文,已经是Hash算法不可忽视的威胁,特别是近几年来爆出个大平台用户数据泄漏,导致账号频频被盗。
对称加密算法
对称加密就是明文加密时使用的密钥和密文解密使用的密钥是同一套。相应的算法有DES、AES等。
非对称加密算法
非对称加密算法又称为公开的密钥加密算法,它需要两个密钥,一个称为公开的密钥,即公钥;另一个称为私有密钥,即私钥。公钥与私钥需要配对使用,用公钥加密时,需要其对应的私钥才能解密;用私钥加密时,只有对应的公钥才能解密。
最广泛的非对称加密算法位RSA算法,其原理是基于一个十分简单的数论事实,将两个大的素数相乘容易,但对乘积因式分解就十分困难。
数字签名
数字签名是对非对称加密和数字摘要技术的综合运用,即将通信正文先进行数字摘要处理,然后进行非对称加密,得到数字签名。
数字签名使用的场景为:发送端将通信内容的数字签名与明文一起发送给接收端,接收端使用相同的摘要算法,获取数字摘要;接收端同时利用公钥对数字签名进行解密,获取数字摘要,然后将两份数字摘要进行比对,相同则说明接收内容完整,没有被第三方篡改。
常见的数字签名算法为MD5withRSA、SHA1withRSA。
数字证书
数字证书(Digital Certificate)也称电子证书,包含如下内容:
- 对象名称(人、服务器、组织、机构)
- 证书过期时间
- 证书颁发机构(谁为证书担保)
- 证书颁发机构对证书信息的数字签名
- 签名算法
- 对象公钥
证书除了包含一些认证信息外,还包含证书持有人的公钥,外界获得证书后可以使用公钥对相关信息进行加密,而信息接收方则使用私钥进行解密。由于证书包含公钥、摘要算法,因此可以对签名算法进行校验,验证证书的合法性。