按照技术特征分类,密码算法可以分为以下三类。
1.对称算法
对称算法是指加密密钥与解密密钥一样的密码算法,又叫做秘密密钥算法或单密钥算法。该类算法又分为流密码算法和分组密码算法。
流密码算法又叫做序列密码算法,每加密/解密一位或者一字节的明文或密文。
分组密码算法把明文(密文)分成确定长度的数据块(比特块或字节块),用同一密钥和算法对每一明文(密文)块加密(解密)后得到一样长的密文(明文)块,然后将密文(明文)块按照顺序组合起来最终得到明文(密文)。
常见的流密码算法包括RC4;常见的分组密码算法包括DES、IDEA、RC2、AES、SM4等。
2.非对称算法
非对称算法指的是加密的密钥与解密的密钥不一样的密码算法,从一个密钥推导出另一个密钥很难,又叫做公开密钥算法或公钥算法。该算法使用一个密钥进行加密,使用另一个密钥进行解密。其中加密密钥可以公开,又叫做公开密钥或公钥;解密密钥一定要保密,又叫私有密钥或私钥。
常见的非对称算法包括RSA、DH、DSA、ECDSA、ECC、SM2等。
3.摘要算法
摘要算法指的是把随意长的输入消息数据转换为确定长度的输出数据的一种密码算法,又叫做散列函数、哈希函数或杂凑函数、单向函数等。摘要算法所产生的确定长度的输出数据叫做摘要值、散列值或哈希值。摘要算法没有密钥。
常见的摘要算法包括MD5、SHAI、SM3等。