常见的加密方式
取盐校验 (取密码中的关键信息) 不可逆
相关技术:
md5 md2 md4 (带密码的 md5)
md5 默认填充值(key) 0123456789abcdef
md5 :明文:123456密文16位的:49ba59abbe56e05732位的:e10adc3949ba59abbe56e057f20f883e40位的:(不常用)
sha1(40 位) sha256(64 位) sha512(128 位)
sha1:明文:123456密文:40位:7c4a8d09ca3762af61e59520943dc26494f8941bsha256:明文:123456密文:64位:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92sha512:明文:123456密文:128位:ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413
对称加密 (可还原)
可以根据同一个密钥进行加解密
明文可以根据同一个密钥进行加密, 密文可以根据相同的密钥进行解密为明文.
相关技术:
AES DES 3DES
非对称加密 (可还原)
一个明文可以根据一个密钥
加密出多个不同的密文
多个不同的密文可以根据相同的密钥
解密出相同的明文
相关技术:
RSA (私钥 公钥)
服务器有: 公钥和私钥
客户端只有: 公钥
对称加密和非对称加密的密文共同特点
- 十六进制的
- base64 : base64 编码的组成内容是由 A-Z a-z 0-9 + _ = 等组成的
JS 自带的加解密 API 方法
atob(‘密文’) : 解密方法
btoa(‘明文’) : 加密方法
let x = '我是coco'let encryption = btoa(encodeURIComponent(x))console.log(encryption) // JUU2JTg4JTkxJUU2JTk4JUFGY29jbw==let decryption = decodeURIComponent(atob(encryption))console.log(decryption) // 我是coco