шифрование — OpenSSL [des-ede3-cbc] Переполнение стека при расшифровке

Я должен был получить некоторые данные, зашифрованные с помощью 3DES с общими ключами.
Я использую php7 и функцию openssl_decrypt, но я не могу воссоздать результат из примера присланной мне документации.

Команда OpenSSL, которая создает отправленные мне данные, выглядит следующим образом:

openssl enc -des-ede3-cbc -base64 -K 17839778773fadde0066e4578710928988398877bb123789 -iv 00000000 -in D:/in.txt

Example:
string_encoded: 123456
data_to_decrypt: Ja79hWTRfBE=

Я попытался расшифровать «Ja79hWTRfBE =» с помощью онлайн-инструмента, и я успешно получил «123456».
(Я использовал этот инструмент: http://tripledes.online-domain-tools.com/ с вводимым текстом (шестнадцатеричное) «25aefd8564d17c11», функция: 3DES, режим: CBC, ключ (шестнадцатеричный) 17839778773fadde0066e4578710928988398877bb123789, iv: 00000000)

Ниже мой PHP-код:

$key = "17839778773fadde0066e4578710928988398877bb123789";
$decData = openssl_decrypt(base64_decode('Ja79hWTRfBE='), 'DES-EDE3-CBC', $key, 0, "00000000");
var_dump($decData);

var_dump вернуть мне bool (false).

Что я делаю неправильно?

1

Решение

я могу воспроизвести вашу цель с помощью следующего кода:

<?php

$data = "123456";
$method = "DES-EDE3";
$key = "17839778773fadde0066e4578710928988398877bb123789";
$options = 0;

// transform the key from hex to string
$key = pack("H*", $key);

// encrypt
$enc = openssl_encrypt($data, $method, $key, $options);
// decrypt
$dec = openssl_decrypt($enc, $method, $key, $options);

echo "plain: ".$data." encrypted: ".$enc." decrypted: ".$dec;
  • установить данные без base64
  • использовать метод DES-EDE3
  • преобразовать свой ключ (из шестнадцатеричного в строковое)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]