一、密码算法分类:
密码算法主要分为三类:对称密码算法、 非对称密码算法、摘要算法。
二、对称密码算法(Symmetric-key Algorithm)
1、概念
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。
2、步骤
对称算法 是指加密秘钥和解密秘钥相同的密码算法,又称为 秘密秘钥算法 或 单密钥算法 。
该算法又分为 分组密码算法(Block cipher) 和 流密码算法(Stream cipher) 。
分组密码算法 又称块加密算法
- 加密步骤一:将明文拆分为 N 个固定长度的明文块
- 加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
- 加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文
流密码算法 又称序列密码算法
-
加密:每次只加密一位或一字节明文
-
解密:每次只解密一位或一字节密文
常见的分组算法: AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等
常见的流密码算法: RC4
AES:目前安全强度较高、应用范围较广的对称加密算法
SM1:国密,采用硬件实现
SM4:国密,可使用软件实现
DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法
二、非对称密码算法(Asymmetric-key Algorithm)
1.概念
非对称加密需要两把密钥:公钥和私钥,他们是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
2、步骤
非对称算法 是指加密秘钥和解密秘钥不同的密码算法,又称为 公开密码算法 或 公钥算法,该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。
- 加密秘钥可以公开,又称为 公钥
- 解密秘钥必须保密,又称为 私钥
常见非对称算法包括 RSA、SM2(国密)、DH、DSA、ECDSA、ECC 等。
三、摘要算法(Digest Algorithm)
1.概念
摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等。
摘要算法所产生的固定长度的输出数据称为 摘要值 、 散列值 或 哈希值 ,摘要算法无秘钥。
摘要算法 通常用来做数据完整性的判定,即对数据进行哈希计算然后比较 摘要值 是否一致。
摘要算法主要分为三大类: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 算法