RSA дешифрованные данные повреждены - PullRequest
0 голосов
/ 16 марта 2011

Мой сценарий использует openssl_private_decrypt() для расшифровки строки, зашифрованной с помощью RSA в другой программе. В настоящее время он пишет в файл. Но когда я пытаюсь открыть его в текстовом редакторе, он говорит, что не может обнаружить кодировку. Если я попытаюсь повторить это, ничего не появляется. Если вывести его длину, я получу 256 вместо правильного 3.

Я знаю, что расшифровка выполнена правильно, потому что использование команды терминала cat в выходном файле дает правильные данные.

$ cat decrypted.txt

Похоже, что это проблема кодировки символов, проблема, которую я слышу, может причинить много боли в PHP. Я даже пытался utf8_encode(). В чем может быть проблема?

Вот код:

$results = '';
openssl_private_decrypt(
    base64_decode(
        <<<EOS
QWlG+AZIt9GE0hw0wwcPRtUWueMLBxj3YWpa5zQBoz1ttnt7TvlxDtYWZcvaUL/qr2CJCADE2iTR
G72FhAwew2fhqlqmsxL7Nns3yegflTTMXyilVM3mPU4Cx94ylLfa+ZrqrNEepaRorNJ/js5iTq9i
avegO/kYOv4zhEsZirlk/Mj0vVv6irWo8WyZoCDC2SwfGWeSUI8F4pq4FUkRh9V/0zAUZ+3P0A7Z
SrA80dSa6U/J+poRcmE1vRLQXvM8dBtFRKmb0zfltLUBMcMhcglzAhcpemJ99OCZmUuynFRcRNkj
CkOLsO+lSHntcbmXqsKE+of78gnU3tp5hHSHIg==
EOS
    ),
    $results,
    openssl_pkey_get_private(
        // load private key
    ),
    OPENSSL_NO_PADDING
);
echo $results;

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Тот факт, что вы получаете расшифрованные данные точно по длине одного блока, а не по длине ожидаемых данных, действительно указывает на проблему padding .

Убедитесь, что вы используете одинаковый флаг заполнения с обеих сторон.

0 голосов
/ 16 марта 2011

Я не знаком с openssl_private_decrypt, но мне кажется логичным, что вы предоставили бы данные base64_encode () для openssl_private_encrypt ().

В этом случае вы деформируете свои данные, выполняя неправильный порядок при расшифровке.

Похоже, что вы хотите сначала расшифровать строку, а затем запустить base64_decode () для незашифрованной строки.

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