导包
import CryptoJS from 'crypto-js';
import JSEncrypt from 'jsencrypt';
import {isBlank} from "@/utils/string-utils";
其中:string-utils
Base64编码
/**
* encodeBase64
* @param raw
*/
export function encodeBase64(raw: string) {
if (isBlank(raw)) {
return raw;
}
const encodeCharSequence = CryptoJS.enc.Utf8.parse(raw);
return CryptoJS.enc.Base64.stringify(encodeCharSequence);
}
Base64解码
/**
* decodeBase64
* @param raw
*/
export function decodeBase64(raw: string) {
if (isBlank(raw)) {
return raw;
}
const decodeCharSequence = CryptoJS.enc.Base64.parse(raw);
return decodeCharSequence.toString(CryptoJS.enc.Utf8);
}
AES
enCryptAES
/**
* enCryptAES
* @param raw
* @param secretKey 一般不可能为空
*/
export function enCryptAES(raw: string, secretKey: string): string {
if (isBlank(raw)) {
return raw;
}
const dataHex = CryptoJS.enc.Utf8.parse(raw);
const keyHex = CryptoJS.enc.Utf8.parse(secretKey);
return CryptoJS.AES.encrypt(dataHex, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}).toString();
}
deCryptAES
/**
* deCryptAES
* @param raw
* @param secretKey 一般不可能为空
*/
export function deCryptAES(raw: string, secretKey: string): string {
if (isBlank(raw)) {
return raw;
}
const keyHex = CryptoJS.enc.Utf8.parse(secretKey);
const decryptData = CryptoJS.AES.decrypt(raw, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return decryptData.toString(CryptoJS.enc.Utf8);
}
RSA
公钥加密
/**
* RSA rsaEncryptByPub
* @param raw
* @param key 一般不可能为空
*/
export function rsaEncryptByPub(raw: string, pubKey: string): string | false {
if (isBlank(raw)) {
return raw;
}
const decrypt = new JSEncrypt();
const PUBLIC_KEY = processPubKey(pubKey);
decrypt.setPublicKey(PUBLIC_KEY);
return decrypt.encrypt(raw);
}
私钥解密
/**
* RSA rsaDecryptByPri
* @param raw
* @param priKey 一般不可能为空
*/
export function rsaDecryptByPri(raw: string, priKey: string): string | false {
if (isBlank(raw)) {
return raw;
}
const decrypt = new JSEncrypt();
const PRIVATE_KEY = processPriKey(priKey);
decrypt.setPrivateKey(PRIVATE_KEY);
return decrypt.decrypt(raw);
}
HmacSHA256
/**
* buildHmacSHA256
* @param data
* @param secretKey
*/
export function buildHmacSHA256(raw: string, secretKey: string): string {
const hash = CryptoJS.HmacSHA256(raw, secretKey);
return hash.toString(CryptoJS.enc.Hex).toUpperCase();
}
持续更新…