相关疑难解决方法(0)

nodejs加密解密有什么问题?

我有以下加密数据:

U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o

解密它的传递是: password

(这是来自胡言乱语的例子)

在使用openssl的命令行中:

echo "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o" | openssl enc -d -aes-256-cbc -a -k password

输出是:

Made with Gibberish\n

使用我的NodeJS应用程序:

  var decipher = crypto.createDecipher('aes-256-cbc', "password");
  var dec = decipher.update("U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o",
     'base64', 'utf8');
  dec += decipher.final('utf8');
Run Code Online (Sandbox Code Playgroud)

TypeError: DecipherFinal fail在这decipher.final行有以下错误.

我错过了什么吗?谢谢.

openssl cryptography aes node.js

16
推荐指数
1
解决办法
6738
查看次数

使用node.js解密AES256会返回错误的最终块长度

使用此Gist,我能够在Node.js 0.8.7中成功解密AES256.然后当我升级到Node.js 0.10.24时,我现在看到这个错误:

TypeError:错误:0606506D:数字包络例程:EVP_DecryptFinal_ex:
Decipheriv.Cipher.final中的最终块长度错误(crypto.js:292:27)

以下是Gist的解密代码(为方便起见,此处显示):

var crypto = require('crypto');

var AESCrypt = {};

AESCrypt.decrypt = function(cryptkey, iv, encryptdata) {
encryptdata = new Buffer(encryptdata, 'base64').toString('binary');

var decipher = crypto.createDecipheriv('aes-256-cbc', cryptkey, iv),
decoded = decipher.update(encryptdata);

decoded += decipher.final();
return decoded;
}

AESCrypt.encrypt = function(cryptkey, iv, cleardata) {
var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv),
encryptdata = encipher.update(cleardata);

encryptdata += encipher.final();
encode_encryptdata = new Buffer(encryptdata, 'binary').toString('base64');
return encode_encryptdata;
}

var cryptkey = crypto.createHash('sha256').update('Nixnogen').digest(),
iv = 'a2xhcgAAAAAAAAAA',
buf = "Here is some …
Run Code Online (Sandbox Code Playgroud)

encryption openssl aes node.js

13
推荐指数
3
解决办法
3万
查看次数

标签 统计

aes ×2

node.js ×2

openssl ×2

cryptography ×1

encryption ×1