You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.6 KiB
43 lines
1.6 KiB
var CryptoJS = require('./aes.js').CryptoJS; //引用AES源码js
|
|
var MD5 = require('./md5.js').md5;
|
|
|
|
import { JSEncrypt } from 'wxmp-rsa'
|
|
// 定义公钥
|
|
const publicKey = `
|
|
-----BEGIN PUBLIC KEY-----
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzNWyjYe3qt4YRTDwANxD
|
|
PNLAJ9TZBuHsSqSjJM5B35fABwN3gwm5Q/SCz/6kgKTqeSgCVPFYhO/zOD6G8K7E
|
|
JLgx95ZIeAB9EkW+xrhFDDthUZAkA03zHJO6SkFKOciLFVi94BdCdGlNFlnaBBqA
|
|
+8XvCpD1V8DFc/9cpb5icZvngu8vEkwkbYceCXKUMNxoXY/E2cFe8f2tVFR5pRkQ
|
|
gRLbM70jt4yBGOD8pbuk6fcnD7ghGWgzMq/845N3wISSTp/gAQg8403Fk+8AoL+F
|
|
KgxUkjUOpPI2XrcpQm0EphuAX4J0Xvo3Hu6TEPZYyqULEXGT2Jukmh0NSkNO0F39
|
|
xwIDAQAB
|
|
-----END PUBLIC KEY-----
|
|
`
|
|
//加密
|
|
function Encrypt(pargam) {
|
|
let word = JSON.stringify(pargam)
|
|
let keyStr = new Date().getTime()
|
|
keyStr = MD5(keyStr)
|
|
var key = CryptoJS.enc.Utf8.parse(keyStr); //Latin1 w8m31+Yy/Nw6thPsMpO5fg==
|
|
var srcs = CryptoJS.enc.Utf8.parse(word);
|
|
var encrypted = CryptoJS.AES.encrypt(srcs, key ,{ mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
|
|
const myEncrypt = new JSEncrypt()
|
|
myEncrypt.setPublicKey(publicKey)
|
|
key = myEncrypt.encryptLong(keyStr)
|
|
return {key: key, body: encrypted.toString()}
|
|
}
|
|
//解密方法 word待解密数据,keyStr密钥
|
|
function Decrypt(word, keyStr) {
|
|
keyStr = keyStr ? keyStr : `3sd&d24h@$udD2s*`;
|
|
var key = CryptoJS.enc.Utf8.parse(keyStr); //Latin1 w8m31+Yy/Nw6thPsMpO5fg==
|
|
var decrypt = CryptoJS.AES.decrypt(word, key, {
|
|
mode: CryptoJS.mode.ECB,
|
|
padding: CryptoJS.pad.Pkcs7
|
|
});
|
|
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
|
|
}
|
|
//暴露接口
|
|
module.exports.Decrypt = Decrypt;
|
|
module.exports.Encrypt = Encrypt;
|