密码算法分类 | 特点 | 常见算法 |
---|---|---|
对称加密算法 | 加密和解密使用相同的密钥 | 分组密码算法: AES, 国密(SM1, SM4, SM7), DES, 3DES 流密码算法: RC2 |
非对称加密算法 | 加密和解密用不同的密钥 | RSA, 国密(SM2, SM9), DSA, ECC, DH |
摘要算法 | 又称散列算法,哈希算法。无密钥,不可解密。把任意长度的数据计算成固定长度的数据。 | SM3, MD5, SHA256, HMACSHA1 |
加密和解密使用相同密钥的加密算法。 该算法又分为 分组密码算法(块加密算法) 和 流密码算法(序列密码算法).
分组密码算法 又称块加密算法:
流密码算法 又称序列密码算法
每次只加密或解密只处理一位或一字节明文或密文
AES:安全强度较高、应用范围较广。密钥的长度能够为128、192和256位,也就是16个字节、24个字节和32个字节
SM1:国密,采用硬件实现
SM4:国密,可使用软件实现
DES/3DES:DES密钥长度64位(8字节), 3DES密钥长度为128位(k1 == k3时)或192位,即16或24个字节组成的字符串
非对称算法 指加密秘钥和解密秘钥不同的密码。 又称为 公开密码算法 或 公钥算法
加密秘钥可以公开,即 公钥加密
解密秘钥必须保密,即 私钥解密
非对称算法有 大数分解 和 离散对数 2种:
RSA密钥长度: 64整倍数(512、1024、2048位). 建议采用1024位的数字
ECC建议采用160位
摘要算法(散列算法,线性散列算法,签名算法),又称 散列函数 哈希函数 杂凑函数, 单向函数 等,是指把 任意长度 数据转化为 固定长度 数据的一种密码算法.
摘要算法所产生的 固定长度 输出数据称为 摘要值 、 散列值 或 哈希值 。 摘要算法无秘钥。
摘要算法 通常用来做数据完整性的判定,即对数据进行哈希计算然后比较 摘要值 是否一致.
摘要算法分类:
MD5值的长度: 二进制编码为128位(16字节), 十六进制编码长度为32位(还有16位的加密结果,只是从32位MD5散列中把中间16位提取出来)
SHA256值长度: 二进制编码256位,十六进制编码64位
国密算法,即国家商用密码算法。 如SM系列密码算法。SM代表商密,即商业密码,用于商业用途。