密码算法主要分为三类:对称密码算法、非对称密码算法、摘要算法。
一、对称密码算法(Symmetric-key Algorithm)
对称算法是指加密秘钥和解密秘钥相同的密码算法,又称为秘密秘钥算法或单密钥算法。
该算法又分为分组密码算法(Block cipher)和流密码算法(Stream cipher)。
分组密码算法
又称块加密算法
加密步骤一:将明文拆分为N个固定长度的明文块
加密步骤二:用相同的秘钥和算法对每个明文块加密得到N个等长的密文块
加密步骤三:然后将N个密文块按照顺序组合起来得到密文
流密码算法
又称序列密码算法
加密:每次只加密一位或一字节明文
解密:每次只解密一位或一字节密文
常见的分组密码算法包括AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2等;常见的流密码算法包括RC4等。
AES:目前安全强度较高、应用范围较广的对称加密算法
SM1:国密,采用硬件实现
SM4:国密,可使用软件实现
DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法
二、非对称密码算法(Asymmetric-key Algorithm)
非对称算法是指加密秘钥和解密秘钥不同的密码算法,又称为公开密码算法或公钥算法,该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。
加密秘钥可以公开,又称为公钥
解密秘钥必须保密,又称为私钥
常见非对称算法包括RSA、SM2(国密)、DH、DSA、ECDSA、ECC等。
三、摘要算法(Digest Algorithm)
摘要算法是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为散列函数、哈希函数、杂凑函数、单向函数等。
摘要算法所产生的固定长度的输出数据称为摘要值、散列值或哈希值,摘要算法无秘钥。
摘要算法通常用来做数据完整性的判定,即对数据进行哈希计算然后比较摘要值是否一致。
摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和MAC(Message Authentication Code,消息认证码算法);另国密标准SM3也属于摘要算法。
MD系列主要包括MD2、MD4、MD5
SHA系列主要包括SHA-1、SHA-2系列(SHA-1的衍生算法,包含SHA-224、SHA-256、SHA-384、SHA-512)
MAC系列主要包括HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384和HmacSHA512算法