本文参考《PKI/CA 与数字证书技术大全》书籍,如有理解bug, 请大家指正。
密码算法分类
密码算法主要分为三类:对称算法、 非对称算法、摘要算法。
对称算法
对称算法是指加密秘钥和解密秘钥相同的密码算法,又称为秘密秘钥算法或单密钥算法。该算法又分为 <b> 流密码算法 </b> 和 <b>分组密码算法</b>。
- 流密码算法 又称“序列密码算法”, 每次加密或解密一位或一字节的明文或密文
- 分组密码算法 明文分为固定长度的数据块,用同一秘钥和算法对每一明文块加密后得到等长的密文块,然后将密文块按照顺序组合起来最终得到明文。
常见的流密码算法包括 RC4; 常见的分组密码算法包括 DES, IDEA, RC2, AES, SM4 等。
非对称算法
非对称算法是指加密秘钥和解密秘钥不同的密码算法,从一个秘钥很难推到出另一个秘钥,又称为 公开密码算法或公钥算法。该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。其中加密秘钥可以公开,又称为 公开秘钥或 公钥;解密秘钥必须保密,又称为私有秘钥或私钥。
常见非对称算法包括 RSA, DH, DSA, ECDSA, ECC, SM2 等。
摘要算法
摘要算法是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为散列函数、哈希函数或者杂凑函数、单向函数等,摘要算法所产生的固定长度的输出数据称为摘要值、散列值或哈希值。摘要算法没有秘钥。
常见的摘要算法包括 MD5, SHA1, SM3 等。
<b>注意: 非对称秘钥的秘钥对是可以理解为公钥和私钥中的信息是pair的,因此,正常情况下,使用公钥加密,然后用私钥解密;当然也能用私钥加密,公钥解密,但是公钥是公开存在的,因此一般不这么做</b>
<b>对于摘要算法来说,通常用来做数据完整性的判定,即对数据整体进行哈希计算,然后比较是否一致。</b>