【CryptoJS常用工具封装】

该文章介绍了JavaScript中使用CryptoJS库进行Base64编码解码、AES加解密、RSA公钥私钥加密解密以及HmacSHA256签名的方法。提供了相应的函数实现,包括对字符串的处理和加密过程。
摘要由CSDN通过智能技术生成

CryptoJS-Documents

导包

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();
}

持续更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值