Узел JS crypto "Неверная строка ввода"

Хотите расшифровать строку из файла.

Но когда я использую nodejs для расшифровки строки из fs, выдает ошибку "Bad input string"

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));

Tho console.log(data) из fs также выдает 'encryptedString'

1 ответ

Решение

Проблема с вашим кодом НИЧЕГО. Проблема в том, что вы пытаетесь расшифровать строку. Строка, которую вы хотите расшифровать, не может быть любой строкой. Это должна быть строка, сгенерированная из аналогичного 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"));

Например, этот код прекрасно работает без ошибок.

Надеюсь, поможет.

Другие вопросы по тегам