IT评测·应用市场-qidao123.com技术社区
标题:
(叁)前端实现加密的方式:AES 加密(实现的两种方式)
[打印本页]
作者:
滴水恩情
时间:
2025-3-20 07:29
标题:
(叁)前端实现加密的方式:AES 加密(实现的两种方式)
Ⅰ、AES 加密:
1、使用 AES 加密前的准备工作:
其一、安装 crypto-js :
A、安装命令:
npm install crypto-js
B、乐成安装后的截图:
// 在 package.json 文件内有安装后的依靠(但版本不一定是 ^4.2.0);
2、实现 AES 加密的方式一:
其一、在项目中创建 crypto.js 文件:
A、crypto.js 文件位置截图为:
B、代码为:
import CryptoJS from "crypto-js";
export default {
//随机生成指定数量的16进制key
generatekey(num) {
let library =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let key = "";
for (var i = 0; i < num; i++) {
let randomPoz = Math.floor(Math.random() * library.length);
key += library.substring(randomPoz, randomPoz + 1);
}
return key;
},
//加密
encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "ylvector12345678"; //判断是否存在key,不存在就用定义好的key
var key = CryptoJS.enc.Utf8.parse(keyStr);
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
},
//解密
decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "ylvector12345678";
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
};
复制代码
其二、在页面中引入并使用:
A、在页面引入 crypto-js 文件:
// 注意:以实际引入的 crypto-js 文件地点为主;
B、使用的加密解密的过程:
a、随机十六位密匙的加密解密操作:
// 用AES给密码加密
const keys = Crypto.generatekey(16);//ylvector
//如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
// const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
const encrypts = Crypto.encrypt(username.value,keys);
// const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
const decrypt = Crypto.decrypt(encrypts, keys);
console.log(username.value,1111111)
console.log(encrypts,222222)
console.log(decrypt,333333333);
复制代码
b、随机十六位密匙的加密解密截图:
// 截图一:此时随机产生的生成值,不是固定值为:rKAq5sr4UrRdmDAr+8epHA==
// 截图二:此时随机产生的生成值,不是固定值为:3BVfDdolhXyB1E79iBQUzA==
c、固定十六位密匙的加密解密操作:
// 用AES给密码加密
// const keys = Crypto.generatekey(16);//ylvector
//如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
// const encrypts = Crypto.encrypt(username.value,keys);
const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
// const decrypt = Crypto.decrypt(encrypts, keys);
console.log(username.value,1111111)
console.log(encrypts,222222)
console.log(decrypt,333333333);
复制代码
d、固定十六位密匙的加密解密截图:
// 此时无论怎么生成,固定的生成值为:zweKZ45kJyI6HASVc8DQSQ==
3、实现 AES 加密的方式二:
其一、在项目中创建 crypto.js 文件:
A、crypto.js 文件位置截图为:
B、代码为:
import CryptoJS from "crypto-js";
export default {
//加密
encode(str = ''){
// utf-8 转换
let message = CryptoJS.enc.Utf8.parse(str);
let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
// Encrypt
var ciphertext = CryptoJS.AES.encrypt(message, secret_key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return ciphertext.toString();
},
//解密
decode(str = ''){
// utf-8 转换
let message = str;
let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
// Decrypt
var ciphertext = CryptoJS.AES.decrypt(message.toString(), secret_key,{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return ciphertext.toString(CryptoJS.enc.Utf8);
}
};
复制代码
其二、在页面中引入并使用:
A、在页面引入 crypto-js 文件:
// 注意:以实际引入的 crypto-js 文件地点为主;
B、使用的加密解密的过程:
a、固定十六位密匙的加密解密操作:
// 用AES给密码加密
const encrypts = Crypto.encode(username.value);
// 用AES给密码解密
const decrypt = Crypto.decode(encrypts);
console.log(username.value,1111111)
console.log(encrypts,222222)
console.log(decrypt,333333333);
复制代码
b、固定十六位密匙的加密解密截图:
// 此时无论怎么生成,固定的生成值为:SeaNt1TTsdmvw7u24Q99Ng==
Ⅱ、寄语:
非常荣幸能作为该文章专栏的博主,关于上述问题不懂的可以随时滴滴,一定会及时回复;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4