CryptoJS 使用

CryptoJS 使用

安装

1
npm install crypto-js

3DES 加密解密

key 和 iv

1
2
3
4
5
6
7
8
// 导入模块
let TripleDES = require('crypto-js/tripledes');
import CryptoJS from 'crypto-js';

// key
const TripleDESKey = 'abcdefghijklmnopqrstuvwxyz';
// iv
const TripleDESIV = '23333333';

3DES 加密

1
2
3
4
5
6
7
8
9
10
11
/**
* 使用 3DES 加密字符串
* @param {string} message 需要加密的明文
*/
function encryptMessage(message) {
// 使用 CryptoJS.enc.Utf8.parse 解析 string 这部很重要
let key = CryptoJS.enc.Utf8.parse(TripleDESKey);
let iv = CryptoJS.enc.Utf8.parse(TripleDESIV);
let encrypted = TripleDES.encrypt(message, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString();
return encrypted
}

3DES 解密

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 3DES 解密 (mode: CBC, padding: Pkcs7)
*
* @param {any} message 需要解密的 base64 加密过的字符串
* @returns
*/
function decryptMessage(message) {
let key = CryptoJS.enc.Utf8.parse(TripleDESKey);
let iv = CryptoJS.enc.Utf8.parse(TripleDESIV);
let decrypted = TripleDES.decrypt(message, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8);
return decrypted;
}

Usage

1
2
3
4
5
6
const s = 'hello world';
let encrypted = encryptMessage(s);
console.log('encrypted===', encrypted);
let decrypted = decryptMessage(encrypted);
console.log('orignal =====', s);
console.log('decrypted====', decrypted);

Output

1
2
3
encrypted=== MzHhP/jU2HNW9CwjpQWRAA==
orignal ===== hello world
decrypted==== hello world