не может расшифровать зашифрованные данные RSA с помощью OpenSSL - PullRequest
1 голос
/ 12 декабря 2011

Я генерирую открытый и закрытый ключи для RSA

openssl genrsa -des3 -out private.pem 2048
openssl rsa -in private.pem -out public.pem -outform PEM -pubout

и использую следующий php-код для шифрования и дешифрования данных.

<?php
$plaintext = 'Hello';
$publicKey = openssl_pkey_get_public('file://public.pem');
$encrypted = '';
if (!openssl_public_encrypt($plaintext, $encrypted, $publicKey))
    die('Failed to encrypt data');
var_dump($encrypted);


if (!$privateKey = openssl_pkey_get_private('file://private.pem', '123456789'))
    die('Private Key failed');
$decrypted = '';
if (openssl_open($encrypted, $decrypted, $envelope, $privateKey) === FALSE)
    die('Failed to decrypt data');
?>

он будет шифровать данные, но для дешифрования данныхон не работает и показывает Не удалось расшифровать данные

он покажет что-то вроде следующего результата

string(256) "y)ù¿5_÷q$çD±!‘­[’ÓcÜC$Gèïü*ÞEÇGm>ËÂïQÄ„ð­½i=é¨Zs€©   |T²»Z”k( ráëµ1,r]o  –Òll'T¾i¹Bò}Æ1sËèÝwœÒ„Ä–È‹\1{S'ÆY³Ïà^hŽ™©XO%f7‘Bþ®Ra.ªÜäÆô¼'©³#Ý.H9…ŒÏ\6°ÆýþÆJµ^ðŠØÆr£Ô&ü—Ý*ýÄq ƒÝcÓÚAçOmœi\Ê¿›ãB~ZP1ŒÑÔâ¨S…6—êQ–²x¥^0´Íº(d?G•ÚIWå¡Ä" Failed to decrypt data

1 Ответ

2 голосов
/ 12 декабря 2011

Если вы используете openssl_public_encrypt() для шифрования ваших данных, вам необходимо использовать openssl_private_decrypt() для расшифровки данных.

openssl_open() предназначен для использования с openssl_seal().

Я бы рекомендовал использовать варианты _open() и _seal() вместо вариантов _public_encrypt() и _private_decrypt() - механизмы открытого ключа предназначены исключительно для транспорта сессионного ключа и цифровые подписи . Алгоритмы с открытым ключом предназначены для использования со случайными данными (или почти случайными данными из дайджестов сообщений ). Использование неслучайных данных с алгоритмами с открытым ключом, безусловно, является неправильным использованием алгоритмов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...