Расшифровка NodeJS не выполняется при использовании Crypto.В чем проблема? - PullRequest
0 голосов
/ 25 октября 2018
var decipher = Crypto.createDecipheriv('aes-256-cfb', 'testtesttesttesttesttest', 'testtesttesttest')

Error: Invalid key length
    at new Decipheriv (crypto.js:267:16)
    at Object.createDecipheriv (crypto.js:627:10)

Это ошибка, которую я получаю.Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Длина ключа должна быть ровно 32 байта.Пожалуйста, попробуйте следующий код, чтобы увидеть, работает ли он.

var crypto = require('crypto');
var key = 'testtesttesttesttesttesttesttest';

try{
var cipher = crypto.createCipheriv('aes-256-cfb', key, 'testtesttesttest');
var encryptedData = cipher.update("hello", 'utf8', 'hex') + cipher.final('hex');
console.log(encryptedData);

var decipher = crypto.createDecipheriv('aes-256-cfb', key, 'testtesttesttest');
var decryptedData = decipher.update(encryptedData, 'hex', 'utf8') + decipher.final('utf8');
console.log(decryptedData);
} catch(exception) {
    console.error(exception);
}
0 голосов
/ 25 октября 2018

¿если мы попробуем другой способ?как в этом примере:

function encryptdata(key, text) {

  const hash = crypto.createHash('sha256');
                   hash.update(key);
  const keyBytes = hash.digest();

  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv('aes-256-cfb', keyBytes, iv);
  let enc = [iv, cipher.update(text, 'utf8')];
  enc.push(cipher.final());
  return Buffer.concat(enc).toString('base64');
}
...