这里是文章模块栏目内容页
node.js aes-256-cbc 加密 解密

使用 node.js 进行AES 加密解密,代码如下

加密和解密的算法

// Nodejs encryption with CTR
const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const keyStr = '2ba27190770c3203a3094b1d212f5e2f'
const ivStr = keyStr.substr(0, 16)
const keyByte = Buffer.from(keyStr)
const ivByte = Buffer.from(ivStr)

function encrypt(text) {
    let cipher = crypto.createCipheriv(algorithm, Buffer.from(keyStr), ivByte);
    let encrypted = cipher.update(text);
    encrypted = Buffer.concat([encrypted, cipher.final()]);
    return {
        keyStr: keyStr,
        ivStr: ivByte.toString('hex'),
        encryptedData: encrypted.toString('hex'),
        rawBuffer: encrypted,
        base64Str: encrypted.toString("base64")
    };
}

function decrypt(text) {
    let encryptedData = text.encryptedData
    let iv = Buffer.from(text.ivStr, 'hex');
    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();
}


function decryptBase64(base64Str, ivStr) {
    let buff = Buffer.from(base64Str, 'base64')
    let encryptedData = buff.toString('hex')

    let iv = Buffer.from(ivStr, 'hex');
    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();
}


var hw = encrypt("001002003004005006007+()")
console.log('encrypted = ', hw)
console.log('decode = ', decrypt(hw))
console.log('decode2 = ', decryptBase64(hw.base64Str, hw.ivStr))

输出结果:

encrypted =  {
  keyStr: '2ba27190770c3203a3094b1d212f5e2f',
  ivStr: '32626132373139303737306333323033',
  encryptedData: '47fca608a73f01a9d8215e44898d60b853076f67c60d29defcdb0e0f59294390',
  rawBuffer: <Buffer 47 fc a6 08 a7 3f 01 a9 d8 21 5e 44 89 8d 60 b8 53 07 6f 67 c6 0d 29 de fc db 0e 0f 59 29 43 90>,
  base64Str: 'R/ymCKc/AanYIV5EiY1guFMHb2fGDSne/NsOD1kpQ5A='
}
decode =  001002003004005006007+()
decode2 =  001002003004005006007+()

好了,本文内容全部结束,感谢你的 阅读。

上一篇:如何设置React环境,Webpack和Babel

下一篇:没有了