@NkDev

Как на JavaScritp расшифровать строку с помощью ключа?

Помогите пожалуйста переписать следующий код на JavaScript:
<?php

$encrypted_data = 'jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9';
$key = 'qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s=';

$decoded_data = base64_decode($encrypted_data);
$iv_dec = substr($decoded_data, 0, openssl_cipher_iv_length('AES-256-CBC'));
$encrypted_text = substr($decoded_data, openssl_cipher_iv_length('AES-256-CBC'));

$decrypted = openssl_decrypt($encrypted_text, 'AES-256-CBC', $key, 0, $iv_dec);

echo "Расшифрованная строка: " . $decrypted;


Код на PHP:
https://onlinephp.io/c/f09fe

Вот моя неудачная попытка на JS:
https://playcode.io/2089330
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 2
alsolovyev
@alsolovyev
¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
Так (для nodejs)?
const crypto = require("crypto");

const encryptedData =
  "jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9";
const key = "qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s=";

const decodedKey = Buffer.from(key, "base64");
const decodedData = Buffer.from(encryptedData, "base64");
const ivLength = 16; 

const iv = decodedData.slice(0, ivLength);
const encryptedText = decodedData.slice(ivLength);

const decipher = crypto.createDecipheriv("aes-256-cbc", decodedKey, iv);

try {
  let decrypted = decipher.update(encryptedText, null, "utf8");
  decrypted += decipher.final("utf8");
  console.log("Расшифрованная строка:", decrypted);
} catch (error) {
  console.error("Ошибка расшифровки:", error.message);
}
Ответ написан
@ab1
Key лучше обрезать до qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy
и установить padding в None тогда работает в обе стороны
6723ee70cea23058961837.png
6723ee79b6a60901668459.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы