密码算法分类
密码算法分类 | 特点 | 常见算法 |
---|---|---|
对称加密算法 | 加密和解密使用相同的密钥 | 分组密码算法: AES, 国密(SM1, SM4, SM7), DES, 3DES 流密码算法: RC2 |
非对称加密算法 | 加密和解密用不同的密钥 | RSA, 国密(SM2, SM9), DSA, ECC, DH |
摘要算法 | 又称散列算法,哈希算法。无密钥,不可解密。把任意长度的数据计算成固定长度的数据。 | SM3, MD5, SHA256, HMACSHA1 |
对称密码算法(Symmetric-key Algorithm)
加密和解密使用相同密钥的加密算法。 该算法又分为 分组密码算法
(块加密算法) 和 流密码算法
(序列密码算法).
分组密码算法 又称块加密算法:
- 将明文拆分为 N 个固定长度的明文块
- 用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
- 然后将 N 个密文块按照顺序组合起来得到密文
流密码算法 又称序列密码算法
每次只加密或解密只处理一位或一字节明文或密文
- 分组算法: 国密(SM1, SM4, SM7), AES, DES, 3DES, IDEA, RC2, RC5, RC6
- 流密码算法: RC4, ZUC(国密祖冲之算法)
AES:安全强度较高、应用范围较广。密钥的长度能够为128、192和256位,也就是16个字节、24个字节和32个字节
SM1:国密,采用硬件实现
SM4:国密,可使用软件实现
DES/3DES:DES密钥长度64位(8字节), 3DES密钥长度为128位(k1 == k3时)或192位,即16或24个字节组成的字符串
非对称密码算法(Asymmetric-key Algorithm)
非对称算法 指加密秘钥和解密秘钥不同的密码。 又称为 公开密码算法 或 公钥算法
加密秘钥可以公开,即 公钥加密
解密秘钥必须保密,即 私钥解密
非对称算法有 大数分解
和 离散对数
2种:
- 大数分解 RSA, DSA, ECDSA
- 离散对数 国密(SM2, SM9), DH, DSA, ECC, ECDH
RSA密钥长度: 64整倍数(512、1024、2048位). 建议采用1024位的数字
ECC建议采用160位
摘要算法(Digest Algorithm)
摘要算法(散列算法,线性散列算法,签名算法),又称 散列函数
哈希函数
杂凑函数
, 单向函数
等,是指把 任意长度
数据转化为 固定长度
数据的一种密码算法.
摘要算法所产生的 固定长度
输出数据称为 摘要值
、 散列值
或 哈希值
。 摘要算法无秘钥。
摘要算法 通常用来做数据完整性的判定,即对数据进行哈希计算然后比较 摘要值
是否一致.
摘要算法分类:
- MD系列(Message Digest,消息摘要算法): 包括 MD2、MD4、MD5
- SHA系列(Secure Hash Algorithm,安全散列算法): 包括 SHA-1、SHA-2 系列(SHA-1 的衍生算法,包含
SHA-224、SHA-256、SHA-384、SHA-512) - MAC系列(Message Authentication Code,消息认证码算法): 包括 HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384 和 HmacSHA512 算法
- 国密SM3
MD5值的长度: 二进制编码为128位(16字节), 十六进制编码长度为32位(还有16位的加密结果,只是从32位MD5散列中把中间16位提取出来)
SHA256值长度: 二进制编码256位,十六进制编码64位
国密算法
国密算法,即国家商用密码算法。 如SM系列密码算法。SM代表商密,即商业密码,用于商业用途。
常见密码算法分类 https://blog.csdn.net/qq_39852676/article/details/129318145
国密算法分类 https://zhuanlan.zhihu.com/p/577195882
Java中的散列算法、消息摘要算法、加密算法总结 https://blog.csdn.net/zcmain/article/details/99748873