jsencrypt 只能公钥加密私钥解密
//安装依赖
npm install jsencrypt --save
import JsEncrypt from "jsencrypt"; //rsa加密
//公钥加密
export function RSAencrypt(pas) {
//实例化jsEncrypt对象
let jse = new JsEncrypt();
//设置公钥
jse.setPublicKey(
"-----BEGIN PUBLIC KEY-----\n" +
"-----END PUBLIC KEY-----"
);
//加密
return jse.encrypt(pas);
}
export function RSAdecrypt(pas) {
let jse = new JsEncrypt();
// jse.setPrivateKey(
jse.setPublicKey(
"-----BEGIN PUBLIC KEY-----\n" +
"-----END PUBLIC KEY-----"
);
return jse.decrypt(pas);
}
node-rsa 实现RSA解密
npm install node-rsa --save
export function decrypt(txt) {
//公钥解密
let privateKey = "-----BEGIN PUBLIC KEY-----\n" +
"-----END PUBLIC KEY-----"
try {
const nodersa2 = new NodeRSA(privateKey);
const decrypted2 = nodersa2.decryptPublic(txt, "utf8");
return decrypted2
} catch (error) {
return ''
}
}
export const encrypt = (password) => {
// 私钥加密
// '-----BEGIN PRIVATE KEY-----\n' '\n-----END PRIVATE KEY-----' 必须写
let publicKey = '-----BEGIN PRIVATE KEY-----\n' + '***' + '\n-----END PRIVATE KEY-----'
const nodersa = new NodeRSA(publicKey);
const decrypted = nodersa.encryptPrivate(password, 'base64', "utf8");
return decrypted
}
AES 加解密
npm install crypto-js --save
// 加密
export function AESencrypt(sing, data) {
let secretKey = CryptoJS.enc.Utf8.parse(sing);
let ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), secretKey, {
mode: CryptoJS.mode.ECB,
// iv: CryptoJS.enc.Utf8.parse("3zyJFPEzh5rUeUNi"),
padding: CryptoJS.pad.Pkcs7,
}).toString();
return ciphertext;
}
//解密
export function AESdecrypt(sing, data) {
let secretKey = CryptoJS.enc.Utf8.parse(sing);
let bbb = CryptoJS.AES.decrypt(data, secretKey, {
mode: CryptoJS.mode.ECB,
// iv: CryptoJS.enc.Utf8.parse("3zyJFPEzh5rUeUNi"),
padding: CryptoJS.pad.Pkcs7,
});
return CryptoJS.enc.Utf8.stringify(bbb);
}
生成随机字符串作为sign
export function generateRandomString(length) {
const characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let result = "";
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}