У меня есть некоторый код расшифровки php, и я хочу переписать этот расшифровку в узле js.
$password = "password";
$salt = "salt";
$data = "somebase64data"
$prepared_key = openssl_pbkdf2($password, $salt, 256, 65536, "sha256");
$rtc = openssl_decrypt(base64_decode(data),"AES-256-CBC",
$prepared_key, OPENSSL_RAW_DATA, "LQjFLCU3sAVplBC3");
$rtc = gzdecode($rtc);
file_put_contents(dirname(__FILE__) . '/log/tcs.new.crypt.' . $o . '.rtc.log', $rtc);
Я пытаюсь сделать это:
function decrypt(text, salt, iv) {
const password = "password";
crypto.pbkdf2(password, salt, 65536, 256, "sha256", (err, key) => {
try {
const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
const decrypted = decipher.update(text, "base64", "binary");
decrypted += decipher.final("binary");
} catch (error) {
throw new Error(error)
}
});
}
decrypt(plainText, salt, iv);
И затем у меня есть эта ошибка:Неверная длина ключа. Я знаю, что мой ключ после pbkdf2 - это буфер длиной 256 байт. Но функция createDecipheriv ожидает ключ длиной 32 байта