AES JS demo

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值