美文网首页
【uniapp】Vue.js CryptoJs 中的 3des

【uniapp】Vue.js CryptoJs 中的 3des

作者: 梦蕊dream | 来源:发表于2021-12-16 09:56 被阅读0次

最近改写 uniapp 时候用到了 3des 加密解密,网上找了好多资料好多写的都是 des 加解密,3des和des 是有区别的
DES:Data Encryption Standard(数据加密标准,又美国国密局,选中的IBM的方案,密钥长度为56,标准提出是要使用64位长的密钥,但是实际中DES算法只用了64位中的56位密钥,这一点是容易出错的)
3DES:trip DES(3级DES,是DES的升级版,主要是为了应对快速发展的计算机能力,能够在24小时内暴力破解传统的56位长度密钥的DES,而3DES相当于对统一数据块采用3次DES,3次DES使用的密钥如果完全不同,则密钥长度可以达到168位,大大延长了被暴力破解的时间)

1. 安装加密库

npm install crypto-js --save-dev

或者手动导入工程里加密文件


加密库

2. 引入加密库

import CryptoJS from 'crypto-js'

3. 加密

注意加密方法是【TripleDES】不是【DES】

let keyHex = CryptoJS.enc.Utf8.parse('uniapp-cryptojs-tripledes')
var encrypted = CryptoJS.TripleDES.encrypt ('123456890', keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
    // 偏移量
    // iv: CryptoJS.enc.Utf8.parse(ivstr)
});

console.log('加密字符串Base64', encrypted.toString());
console.log('加密字符串', encrypted.ciphertext.toString());
  • 【encrypted.toString】输出是 Base64 加密结果
  • 【encrypted.ciphertext.toString】输出的是十六进制的加密结果

4. 解密

let keyHex = CryptoJS.enc.Utf8.parse('uniapp-cryptojs-tripledes')
let decryted = CryptoJS.TripleDES.decrypt ( {
    ciphertext: CryptoJS.enc.Base64.parse(base64)
}, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
    // 偏移量
    // iv: CryptoJS.enc.Utf8.parse(ivstr)
});

console.log('解密字符串',decryted.toString(CryptoJS.enc.Utf8));

解密只支持 Base64 解密方式,如果是16进制的字符串,需要把16进制转换成base64 再解密。

//第一步把16进制字符串转为WordArray格式
const WordArray = CryptoJS.enc.Hex.parse(ciphertext);
//第二步把WordArray再转为base64的字符串
const base64str = CryptoJS.enc.Base64.stringify(WordArray);
// 使用 base64str 进行上面的解密操作

5. 测试验证

好多人写完不知道加密的是否正确,下面提供一个 3des 加密例子

加密Key :uniapp-cryptojs-tripledes
原字符串:123456890
Base64加密字符串:WmrGowJCtUQd/2PgoyrJuQ==
16进制加密字符串:5a6ac6a30242b5441dff63e0a32ac9b9

反之,解密后能获取原字符串,即成功了。

================ 排雷 ================

如果你加密是下面的结果,那么就是加密方式错了,注意使用【CryptoJS.TripleDES】而不是【CryptoJS.DES】

使用DES加密方式的结果

加密Key :uniapp-cryptojs-tripledes
原字符串:123456890
Base64加密字符串:j+MUYRccCbBfTqUIPZdtpQ==
16进制加密字符串:8fe31461171c09b05f4ea5083d976da5

相关文章

网友评论

      本文标题:【uniapp】Vue.js CryptoJs 中的 3des

      本文链接:https://www.haomeiwen.com/subject/vrqpfrtx.html