各种加密算法MD5,DES,SHA,RSA,BASE64区分

583 阅读2分钟

1.摘要算法:

  • MD5 (Message Digest 信息摘要)128位摘要,速度快 数据无论有多大,过程都不可逆转
  • SHA1 160位摘要,强度高 都是以固定长度展示
  • SHA2 有很多种SHA-224、SHA-256、SHA-384、SHA-512
  • 主要用途:验证信息完整性、安全访问认证、数字签名
  • 缺点:通过字典的方法进行破解。 名称 | 安全性 | 速度 | | ----- | --- | -- | | SHA-1 | 高 | 慢 | | MD5 | 中 | 快

2.对称加密算法:

  • DES 56位、 112位、168位
  • AES 128位、192位、256位 加密速度更快,安全性更高
  • 特点:加密和解密选择相同的秘钥
名称密钥名称运行速度安全性资源消耗
DES56位较快
3DES112位或168位
AES128、192、256位

3.非对称加密 RSA

  • 特点:非对称加密和解密使用不同的秘钥,分为公钥和秘钥。
  • RSA 国际标准算法(由 RSA 公司发明 Rivest-Shamir-Adleman)
  • ECC 椭圆加密算法( Elliptic Curves Cryptography)
  • DSA (Digital Signature Algorithm) 它是另一种公开密钥算法,它不能用作加密,只用作数字签名。签名生成速度很快,验证速度很慢,加密时更慢,但解密时速度很快,安全性与RSA密钥相等,而密钥长度相等。
名称成熟度安全性运算速度资源消耗
RSA高
ECC

4.其他 Base64

  • 严格定义不算是加密,只是一种编码方式。支持编码与解码。
  • 把二进制的流字节转化成可见的字符

栗子

var str = 'javascript';
window.btoa(str)
//转码结果 "amF2YXNjcmlwdA=="
window.atob("amF2YXNjcmlwdA==")
//解码结果 "javascript"

对于非ASCII码表支持的字符需要用Unicode转码

var str = "China,中国";
window.btoa(window.encodeURIComponent(str))
//"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="
window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='))
//"China,中国"