前端CryptoJS加解密

CryptoJS是标准安全加密算法的JavaScript实现,运行速度快,接口简单,见名知意。文档说明可参考:CryptoJS文档说明。

CryptoJS的实现主要有哈希算法,HMAC、加密算法、以及常用编解码算法。

哈希算法,如MD5、SHA-1、SHA-2等。

加密算法,如AES、DES等。

编解码算法,如Base64、Hex16等。

一、安装crypto-js

npm install crypto-js

二、封装加解密方法

import CryptoJS from 'crypto-js'

/**
 * AES加密
 * @param plainText 明文
 * @param keyInBase64Str base64编码后的key
 * @param ivInBase64Str base64编码后的初始化向量(只有CBC模式下才支持)
 * @return base64编码后的密文
 */
export function encryptByAES(plainText, keyInBase64Str, ivInBase64Str) {
  let key = CryptoJS.enc.Base64.parse(keyInBase64Str)
  let iv = CryptoJS.enc.Base64.parse(ivInBase64Str)
  let encrypted = CryptoJS.AES.encrypt(plainText, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  // 这里的encrypted不是字符串,而是一个CipherParams对象
  return encrypted.ciphertext.toString(CryptoJS.enc.Base64)
}

/**
 * AES解密
 * @param cipherText 密文
 * @param keyInBase64Str base64编码后的key
 * @param ivInBase64Str base64编码后的初始化向量(只有CBC模式下才支持)
 * @return 明文
 */
export function decryptByAES(cipherText, keyInBase64Str, ivInBase64Str) {
  let key = CryptoJS.enc.Base64.parse(keyInBase64Str)
  let iv = CryptoJS.enc.Base64.parse(ivInBase64Str)
  // 返回的是一个Word Array Object,其实就是Java里的字节数组
  let decrypted = CryptoJS.AES.decrypt(cipherText, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })

  return decrypted.toString(CryptoJS.enc.Utf8)
}

三、vue中使用

let secret = 'sQPoC/1do9BZMkg8I5c09A=='
let cipherText = encryptByAES('Hello', secret, secret)
let plainText = decryptByAES(cipherText, secret, secret)
console.log(`Hello加密后的密文为:${cipherText}`)
console.log(`解密后的内容为:${plainText}`)

————————————————

版权声明:本文为CSDN博主「凌波漫步&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lingbomanbu_lyl/article/details/125238945

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CryptoJS是一个纯JavaScript的加密算法类库,可以在前端进行加解密操作。它支持多种加密算法,包括MD5、SHA-1、SHA-256、AES、RSA等。使用CryptoJS可以很方便地进行数据加密和解密操作。以下是使用CryptoJS进行AES加密和解密的示例代码: 1. 引入CryptoJS库文件 ```html <script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script> ``` 2. AES加密 ```javascript // 待加密的数据 var data = "Hello, world!"; // 密钥 var key = "1234567890abcdef"; // 将密钥转换为WordArray对象 var keyHex = CryptoJS.enc.Hex.parse(key); // 加密 var encrypted = CryptoJS.AES.encrypt(data, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // 将密文转换为Base64编码的字符串 var ciphertext = encrypted.toString(); console.log(ciphertext); // 输出:U2FsdGVkX1+JzvzjJQzvJgJZJzvJgJZJzvJgJZJzvJg= ``` 3. AES解密 ```javascript // 密钥 var key = "1234567890abcdef"; // 将密钥转换为WordArray对象 var keyHex = CryptoJS.enc.Hex.parse(key); // 密文 var ciphertext = "U2FsdGVkX1+JzvzjJQzvJgJZJzvJgJZJzvJgJZJzvJg="; // 将密文转换为WordArray对象 var ciphertextHex = CryptoJS.enc.Base64.parse(ciphertext); // 解密 var decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertextHex }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // 将解密后的数据转换为UTF-8编码的字符串 var plaintext = decrypted.toString(CryptoJS.enc.Utf8); console.log(plaintext); // 输出:Hello, world! ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值