代码改变世界

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 是真的非常容易被破解。