下载crypto.js
npm i crypto-js --s
ECB模式代码如下
var CryptoJS = require("crypto-js");
//封装加密函数
const encrypt = function(word,keyStr){
//keyStr为base64格式时
//也可这样写 const key = CryptoJS.enc.Hex.parse(keyStr);
const key = CryptoJS.enc.Base64.parse(keyStr);
var encrypted = CryptoJS.AES.encrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding:CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext) //返回base64格式
//return encrypted.ciphertext.toString().toUpperCase();返回16进制
}
//封装解密函数
const decrypt = function(word,keyStr){
var key = CryptoJS.enc.Base64.parse(keyStr)
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}
CBC模式代码如下
const encrypt = function(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.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString().toUpperCase();
}
// aes解密
const decrypt = function(word,keyStr){
let key = CryptoJS.enc.Utf8.parse(keyStr);
let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, key, {
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
接上,最近又来了一个新的需求,RSA加密的公私钥要动态生成,在这里记录一下
import Encrypt from 'jsencrypt.js';
const generateKeys = function(){
let crypt = new Encrypt();
crypt.getKey();
let publicKey = crypt.getPublicKey();
let privateKey = crypt.getPrivateKey();
// 返回生成的秘钥对
return [publicKey, privateKey];
}