前端使用CryptoJS加密解密

目录
文章目录隐藏
  1. 加密算法
  2. 下载 crypto-js
  3. 使用例子

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抓紧创作!

微信微信 支付宝支付宝

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 前端使用CryptoJS加密解密

发表回复