AES加密
H5使用
//aes.js网上下载放入本地文件
<script src="./aes.js"></script>
vue使用
1、加载依赖
npm install crypto-js --save-dev
2、引入
import CryptoJS from "crypto-js/crypto-js";
3、方法
/**
* AES加密 :字符串 key iv 返回base64
*/
Encrypt: function (word, keyStr = s, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
// console.log("-=-=-=-", encrypted.ciphertext)
// return encrypted.ciphertext.toString() //转16进制
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); //转base64
},
/*解密*/
/**
* AES 解密 :字符串 key iv 返回base64
*
*/
Decrypt: function (word, keyStr = s, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let base64 = CryptoJS.enc.Base64.parse(word);
let src = CryptoJS.enc.Base64.stringify(base64);
var decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
},
SM2
1、加载依赖
npm install --save sm-crypto
2、引用
const sm2 = require("sm-crypto").sm2;
const cipherMode = 1; // 1 - C1C3C2,0 - C1C2C3,默认为1
3、方法
// sm2加密
encryptData(str) {
return "04" + sm2.doEncrypt(str, publicKey, cipherMode);
},
// sm2解密
decryptData(str) {
return sm2.doDecrypt(str.substring(2), privateKey, cipherMode);
}
//给后端(java)传值时需要在加密的密文前面加04,这样后端才能解密正确不报错;
//接口返回加密字符串解密不成功时同样可以加04尝试