AES 加密解密demo
const crypto = require('crypto');
let hashed = '加密后的Base64值'
let jwt = 'JWT Token'
let salt = 'Salt值'
console.log('getted = ',hashed)
let base64Str = hashed.slice(3, hashed.length)
console.log('base64Str = ',base64Str)
console.log('jwt = ',jwt)
console.log('salt = ',salt)
let md5 = require("md5")
let {keyStr,ivStr} = getKeyStr(jwt,salt)
console.log('keyStr = ', keyStr)
console.log('ivStr = ', ivStr)
let result = decryptBase64(base64Str, keyStr, ivStr)
console.log('result = ',result)
function getKeyStr(jwt,salt) {
let keyStr = md5(jwt+salt)
let saltMd5 = md5(salt)
let ivStr = keyStr.slice(1,14) + saltMd5.slice(8,11)
return {keyStr,ivStr}
}
function decryptBase64(base64Str,keyStr, ivStr) {
let algorithm = 'aes-256-cbc'
let buff = Buffer.from(base64Str, 'base64')
let encryptedData = buff.toString('hex')
let iv = Buffer.from(ivStr);
let encryptedText = Buffer.from(encryptedData, 'hex');
let decipher = crypto.createDecipheriv(algorithm, Buffer.from(keyStr), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();
}