介紹
ECB
是一種基礎(chǔ)的加密方式,密文被分割成分組長度詳情的塊(不足補齊)倚舀,然后單獨一個個加密糟把,一個個輸出組成密文。
CBC
是一種循環(huán)模式乓梨,前一個分組的密文和當前分組的明文異或操作后在加密鳖轰,這樣做的目的是增加破解難度(不容易主動攻擊,安全性高于ECB,是SSL,IPSec的標準)
安裝
npm install crypto-js
ECB模式使用
注意:key最少要有16個字符扶镀,否則解密返回結(jié)果為空
(1)在plugins文件夾下創(chuàng)建一個公用的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() {
//調(diào)用方法
let a = encryptData("123456789")
console.log(a,'a');
let b = decryptData(a)
console.log(b,'b');
},
methods: {
},
};
</script>
CBC模式使用
(1)在plugins文件夾下創(chuàng)建一個公用的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() {
//調(diào)用方法
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