javascript - Node.JS Crypto Cipher/Decipher 不工作

标签 javascript node.js cryptography

代码如下:

    var kk = JSON.stringify(object);
    console.log(kk);
    var kk1 = encrypt(kk);
    console.log(kk1)
    var kk2 = decrypt(kk1);
    console.log(kk2)
    this.write(encrypt(kk))

函数:

var encrypt = function (data) {
    var cipher = crypto.createCipher('aes-256-ecb', password)
    cipher.update(data, 'utf8')
    return cipher.final('hex')
}
var decrypt = function (data) {
    var cipher = crypto.createDecipher('aes-256-ecb', password)
    cipher.update(data, 'hex')
    return cipher.final('utf8')
}

控制台消息:

{"action":"ping","ping":30989}
4613a3a8719c921eed61e19b7480de9c
,"ping":30989}

为什么解密没有得到初始字符串?

最佳答案

.update()返回部分加密/解密的内容,您将立即丢弃该数据。您还缺少 .update() 的输出编码,它与您在 .final() 中使用的编码相匹配。试试这个:

function encrypt(data) {
  var cipher = crypto.createCipher('aes-256-ecb', password);
  return cipher.update(data, 'utf8', 'hex') + cipher.final('hex');
}

function decrypt(data) {
  var cipher = crypto.createDecipher('aes-256-ecb', password);
  return cipher.update(data, 'hex', 'utf8') + cipher.final('utf8');
}

关于javascript - Node.JS Crypto Cipher/Decipher 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710552/

相关文章:

node.js - 启用 session 的函数应用的 Azure 服务总线触发器 - Node.js

c# - 如何在 C# 中获得与在 PHP 单元测试中相同的 HMAC256 结果?

Javascript:如果一个元素可显示,则显示数组中的数据

javascript - Angularjs 在模板中导入 html

node.js - 一个项目中的 Web API 和 Web 应用程序与单独的项目

cryptography - RSA 和素数生成器算法

Android - QR 码中 AES 加密字符串的解密问题

javascript - Passport JS "Can' t 在发送后设置标题"

javascript - Magento - 在简短描述中嵌入 Flash 播放器的问题

mysql - 可以将 Nodejs 与 Angular 4 和 MySQL 一起用作数据库吗?