Шаг 1: Создайте ключ с pbkdf2
var key = crypto.pbkdf2Sync('prancypoodle', 'sherylcrowe', 10000, 32, 'sha512');
Создание ключа с паролем, prancy poodle
, соль его с sherylcrowe
итерацию в 10000 раз, из положить длинный ключ 32 байт (AES-256-CBC требуется эта длина).AES-256-CBC Bad Расшифровать
Шаг 2: шифровать что-то
var cipher = crypto.createCipheriv('aes-256-cbc', key, 'dogsarefun'.toString("binary"));
var crypted = cipher.update('wherearemysocks?');
crypted = Buffer.concat([crypted, cipher.final()]);
Шаг 3: Расшифровать & фаил
var decipher = crypto.createDecipheriv('aes-256-cbc', key, 'dogsarefun'.toString('binary'));
var decrypted = decipher.update(crypted);
decrypted = Buffer.concat([decrypted, decipher.final()]);
Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Error (native)
at Decipher.Cipher.final (crypto.js:150:26)
at repl:1:48
at REPLServer.defaultEval (repl.js:272:27)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.<anonymous> (repl.js:441:10)
at emitOne (events.js:101:20)
at REPLServer.emit (events.js:188:7)
at REPLServer.Interface._onLine (readline.js:219:10)
Что я делаю неправильно? Кажется, это так, но это так неправильно.
Есть хорошая ссылка для ключей, что длина и IVS различные алгоритмы нужны? – Breedly
Хорошая точка зрения, [Википедия] (https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) предоставляет размеры ключей и размер блока, но не упоминает, что размер IV такой же, как размер блока, до тех пор, как предполагается. Есть несколько хороших книг, таких как [* Handbook of Applied Cryptography *] (http://cacr.uwaterloo.ca/hac/index.html) см. Скачать бесплатно * Прикладная криптография * от Bruce Schneier * Практическая криптография * от Niels Ferguson и Bruce Schneier * Криптография расшифрована * HX Mel и Дорис М. Бейкер (хороший стартер мне очень нравится). – zaph