(Извините, я не являюсь носителем английского языка)
Я зашифровал данные с помощью AES-256-ECB, я использую функцию 'openssl_decrypt', но всегда получаю ложное значение.
$encrypted = '86090e16c5d950a35efe801f8eb5201b';
$key = 'PasswordExample_PasswordExample_';
$text = openssl_decrypt($encrypted, 'aes-256-ecb', $key);
echo "Result: $text";
Я пытался с опцией OPENSSL_RAW_DATA
и передачей $encrypted
и $key
с base64_encode()
, но ничего не получалось.
Друг посылает мне этот зашифрованный текст программным обеспечением, и я могу прочитать ответ на этом сайте: http://aes.online -domain-tools.com / (.:Text example:.
), но я хочу использовать PHP для автоматизированного процесса.
Кто-то может мне помочь? Я не думаю, что на веб-странице PHP достаточно документации об этой функции.
Обновление:
Этот тестовый код показывает мою проблему:
<?php
$encrypted_hex = '86090e16c5d950a35efe801f8eb5201b';
$encrypted_str = pack("H*", $encrypted_hex);
$encrypted_64 = base64_encode($encrypted_str);
echo "Encrypted (str): '$encrypted_str'<br>\n";
echo "Encrypted (hex): '$encrypted_hex'<br>\n";
echo "Encrypted (64): '$encrypted_64'<br>\n";
echo "<br>\n";
$key_str = 'PasswordExample_PasswordExample_';
$key_hex = implode(unpack("H*", $key_str));
$key_64 = base64_encode($key_str);
echo "Key (str): '$key_str'<br>\n";
echo "Key (hex): '$key_hex'<br>\n";
echo "Key (64): '$key_64'<br>\n";
echo "<br>\n";
$result_str = openssl_decrypt($encrypted_str, 'aes-256-ecb', $key_str);
$result_hex = openssl_decrypt($encrypted_hex, 'aes-256-ecb', $key_hex);
$result_64 = openssl_decrypt($encrypted_64, 'aes-256-ecb', $key_64);
echo "Result (str): '$result_str'<br>\n";
echo "Result (hex): '$result_hex'<br>\n";
echo "Result (64): '$result_64'<br>\n";
echo "<br>\n";
Сгенерированный HTML-код:
Зашифровано (стр.): ' P ^ '
Зашифровано (в шестнадцатеричной форме): '86090e16c5d950a35efe801f8eb5201b'
Зашифровано (64): 'hgkOFsXZUKNe / oAfjrUgGw =='
Ключ (str): 'PasswordExample_PasswordExample _'
Ключ (шестнадцатеричный): '50617373776f72644578616d706c655f50617373776f72644578616d706c655f'
Ключ (64): 'UGFzc3dvcmRFeGFtcGxlX1Bhc3N3b3JkRXhhbXBsZV8 ='
Результат (стр.): ''
Результат (гекс): ''
Результат (64): ''
Если я добавлю OPENSSL_RAW_DATA
, изменений не будет. Проблема сохраняется в Windows 10 и Ubuntu 18.04 (как в Apache 2, так и в PHP 7). Где моя ошибка? Может кто-нибудь показать мне пример использования с aes-256-ecb
?