AES加密(一般用在登录的密码加密)
2023-12-27 14:24 WEB前端小菜鸟 阅读(273) 评论(0) 编辑 收藏 举报后端说现在主流是AES,AES是一种使用密钥加密的算法,叫做对称加密方式
AES 加密的模式有两种:EBC,CBC
(1)EBC(我用的这种,另一种自己百度)
是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
1.cnpm install crypto-js --save-dev
2.vue中使用 在 src中utils工具文件夹中创建crypto.js
import CryptoJS from 'crypto-js' export default { /** * @param {*需要加密的字符串 注:对象转化为json字符串再加密} word * @param {*aes加密需要的key值,这个key值后端同学会告诉你,就是秘钥} keyStr */ encrypt (word, keyStr) { // 加密 let key = CryptoJS.enc.Utf8.parse(keyStr) let srcs = CryptoJS.enc.Utf8.parse(word) let encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}) // 加密模式为ECB,补码方式为PKCS5Padding(也就是PKCS7) return encrypted.toString() }, decrypt (word, keyStr) { // 解密 let key = CryptoJS.enc.Utf8.parse(keyStr) let decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}) return CryptoJS.enc.Utf8.stringify(decrypt).toString() } }
3. 在需要用到加密的文件中引用 import Crypto '@/utils/crypto.js ’
let password = Crypto.encrypt(password) // 调用js方法将密码进行AES加密
不推荐使用 md5
首先 md5 不是加密算法,是哈希摘要。以前通常使用其作为密码哈希来保护密码。由于彩虹表的出现,md5 和 sha1 之类的摘要算法都已经不安全了。如果有不相信的同学 可以到一些解密网站 如 cmd5 网站尝试解密 你会发现 md5 和 sha1 是真的非常容易被破解。