前端使用CryptoJS加密解密

CryptoJS是一个JavaScript的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。

  • AES 高级加密标准,是下一代的加密算法标准,速度快,安全级别高
  • DES 数据加密标准,适用于大量数据加密
  • Triple DES是DES的增强版
  • RC4 流加密算法,密钥长度可变
  • HmacSHA1 键控哈希算法(密钥与消息数据混合)

加密算法

1. 加密函数的参数是:(明文字符串, 密钥字符串,可选参数对象),返回密文字符串。

加密函数是:Cryptojs.AES.encryptCryptojs.DES.encrypt``,Cryptojs.Rabbit.encryptCryptojs.RC4.encryptCryptojs.TripleDES.encrypt

2. 解密函数的参数是:(密文字符串, 密钥字符串,可选参数对象),返回的结果必须用.toString(CryptoJS.enc.Utf8)转为明文。

解密函数是:CryptoJS.AES.decryptCryptoJS.DES.decryptCryptoJS.Rabbit.decryptCryptoJS.RC4.decryptCryptoJS.TripleDES.decrypt

其中可选参数对象常用属性:

  • mode:加密模式 【CBC、ECB、CFB、OFB、CTRGladman(CTR)】
  • paddig:填充方式 【 NoPadding、ZeroPadding、Pkcs7(Pkcs5)、Iso10126、Iso97971、AnsiX923】
  • vi: 偏移向量
  • formatter:自定义格式

下载crypto-js

npm install crypto-js --save-dev
yarn add crypto-js --dev
// 或者下载js文件
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js

使用例子

以下代码是个人在项目中使用,仅供大家参考学习。

import CryptoJS from 'crypto-js';

// 默认的 KEY 与 iv
const getKEY = () => CryptoJS.enc.Utf8.parse('0123456789ABHAED'); // 十六位十六进制数作为密钥
const getIV = () => CryptoJS.enc.Utf8.parse('DYgjCEIMVrj2W9xA'); // 十六位十六进制数作为密钥偏移量

/**
 * AES加密 :字符串 key iv  返回base64
 */
export function encrypt(word) {
  const key = getKEY();
  const iv = getIV();
  const srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding,
  });
  return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}

/**
 * AES 解密 :字符串 key iv  返回base64
 *
 */
export function decrypt(word) {
  const key = getKEY();
  const iv = getIV();
  const base64 = CryptoJS.enc.Base64.parse(word);
  const src = CryptoJS.enc.Base64.stringify(base64);
  var decrypt = CryptoJS.AES.decrypt(src, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding,
  });
  var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr.toString();
}

推荐阅读:对 jsjiami.com.v6 加密结果如何进行手工解密

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:
本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
码云笔记 » 前端使用CryptoJS加密解密

发表回复

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们