У нас есть устаревшая система PHP, которая зашифровывает некоторые данные с помощью openssl_encrypt.Код PHP довольно прост.(Все значения генерируются случайным образом для этого примера, но они имеют тот же формат и длины, что и реальные значения и воспроизводят те же ошибки).
$in = '12345';
$method = 'AES-256-CBC';
$key = '5fjfwc7kp84z5yet358t';
$options = 0;
$iv = '8x69nt6qnptg3x4j';
openssl_encrypt($in, $method, $key, $options, $iv);
Расшифровка с помощью PHP также довольно проста.
$in = 'yy03+cUpsq5uGWclBLtwIA==';
$method = 'AES-256-CBC';
$key = '5fjfwc7kp84z5yet358t';
$options = 0;
$iv = '8x69nt6qnptg3x4j';
openssl_decrypt($in, $method, $key, $options, $iv);
Однако, пытаясь перенести его на криптографию Node, я продолжаю получать ошибки по длине ключа, длине iv и множеству других ошибок, когда я пробую разные подходы.
const input = Buffer.from('yy03+cUpsq5uGWclBLtwIA==');
const iv = Buffer.from('8x69nt6qnptg3x4j');
const key = Buffer.from('5fjfwc7kp84z5yet358t');
let decipher = crypto.createDecipheriv('aes-256-cbc', key, iv, 0);
let clearText = decipher.update(input, 'base64', 'utf8');
clearText += decipher.final('utf8');
У меня, вероятно,попробовал полдюжины или более примеров в NodeJS, и все они выдают ошибки и не могут расшифровать полностью.
Текущая ошибка - «Недопустимая длина ключа», которая остается ошибкой, даже если я ограничиваю ее до 16 символов.