Я должен был получить некоторые данные, зашифрованные с помощью 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).
Что я делаю неправильно?
я могу воспроизвести вашу цель с помощью следующего кода:
<?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;
Других решений пока нет …