簡體   English   中英

節點JS加密“錯誤的輸入字符串”

[英]Node JS crypto “Bad input string”

要解密文件中的字符串。

但是,當我對來自fs的字符串使用nodejs解密時,它給出錯誤“錯誤的輸入字符串”

var fs = require('fs');
var crypto = require('crypto');

function decrypt(text){
  var decipher = crypto.createDecipher('aes-256-ctr', 'password')
  var dec = decipher.update(text,'hex','utf8')
  dec += decipher.final('utf8');
  return dec;
}

fs.readFile('./file.json', 'utf8', function (err,data) {
  if (err) return console.log(err);
  console.log(decrypt(data));
});

嘗試只是制作一個像這樣的字符串

var stringInFile= "encryptedString";
console.log(decrypt(stringInFile));

來自fs的console.log(data)也給出了'encryptedString'

您的代碼存在問題。 問題是您嘗試解密的字符串。 您要解密的字符串不能是任何字符串。 它必須是從類似的encrypt函數生成的字符串。

var crypto = require('crypto');
encrypt = function(text, passPhrase){
    var cipher = crypto.createCipher('AES-128-CBC-HMAC-SHA1', passPhrase);
    var crypted = cipher.update(text,'utf8','hex');
    crypted += cipher.final('hex');
    return crypted;
}

decrypt = function(text, passPhrase){
    var decipher = crypto.createDecipher('AES-128-CBC-HMAC-SHA1', passPhrase)
    var dec = decipher.update(text,'hex','utf8')
    dec += decipher.final('utf8');
    return dec;
}

console.log(decrypt(encrypt("Hello", "123"), "123"));

例如,此代碼可以完美運行且沒有錯誤。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM