介绍
ECB
是一种基础的加密方式,密文被分割成分组长度详情的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
CBC
是一种循环模式,前一个分组的密文和当前分组的明文异或操作后在加密,这样做的目的是增加破解难度(不容易主动攻击,安全性高于ECB,是SSL,IPSec的标准)
安装
npm install crypto-js
ECB模式使用
注意:key最少要有16个字符,否则解密返回结果为空
(1)在plugins文件夹下创建一个公用的aes.js文件
import CryptoJS from "crypto-js";
let keyStr = "\0net.newdon@2024";
export const encryptData = (word) => {
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
});
return encrypted.toString();
}
// 解密
export const decryptData = (word) => {
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();
}
(2)引用
<script>
//引入文件
import {encryptData , decryptData} from '@/plugins/ecb.js'
export default {
data() {
return {},
},
mounted() {
},
created() {
//调用方法
let a = encryptData("123456789")
console.log(a,'a');
let b = decryptData(a)
console.log(b,'b');
},
methods: {
},
};
</script>
CBC模式使用
(1)在plugins文件夹下创建一个公用的aes.js文件
import CryptoJS from "crypto-js";
let keyStr = keyStr ? keyStr : "absoietlj32fai12";
let ivStr = ivStr ? ivStr : "absoietlj32fai12";
// 加密
export const encryptData =(word) => {
let key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv:iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted.toString();
},
// 解密
export const decryptData = (word) => {
var key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
iv:iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return decrypt.toString(CryptoJS.enc.Utf8);
}
(2)引用
<script>
//引入文件
import {encryptData , decryptData} from '@/plugins/ecb.js'
export default {
data() {
return {},
},
mounted() {
},
created() {
//调用方法
let a = encryptData("123456789")
console.log(a,'a');
let b = decryptData(a)
console.log(b,'b');
},
methods: {
},
};
</script>
参考资料:
1 https://ly1024.blog.csdn.net/article/details/103051386