Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php can';t使用OpenSSL解密加密的RSA数据_Php_Encryption - Fatal编程技术网

Php can';t使用OpenSSL解密加密的RSA数据

Php can';t使用OpenSSL解密加密的RSA数据,php,encryption,Php,Encryption,我通过以下方式为RSA生成公钥和私钥: openssl genrsa -des3 -out private.pem 2048 openssl rsa -in private.pem -out public.pem -outform PEM -pubout openssl genrsa-des3-out private.pem 2048 openssl rsa-in private.pem-out public.pem-outform pem-pubout 并使用以下php代码对数据进行加密和解密

我通过以下方式为RSA生成公钥和私钥:

openssl genrsa -des3 -out private.pem 2048 openssl rsa -in private.pem -out public.pem -outform PEM -pubout 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');
?>

它将加密数据,但若要解密数据,它将不起作用,并显示未能解密数据

它会显示一些东西,如以下结果的一些东西,如下结果,结果,以下结果,结果,结果(256)“y(256)“y)和(249)的一些事情,如以下结果,结果(256)“y)会显示一些东西的一些事情,如以下结果,一些事情,如以下结果(256)“y)的一些(256)“y)是(256)“y)和(256)“y)是(256)“y)的(2)c(2)c(2)c(2)c(2)c(2)c(2)c(2)c(2)c)c(2)c(2)c)c(2)c(2)c)c(2)是是该该地区的自自自自自自自自自自自自自自自自自该该该市市政府政府的自自自自自自自自自自自自自自自自该该该该该该该该市政府的自自自自自自自自自该该该市政府的自自该该该该)™©本月7个月的7个月的7个月的7个月的7个月的7个月的7个月的7个月的7个月的7个月的7个月的校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校校229“Ä”无法解密数据

如果您使用加密数据,则需要使用来解密数据

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 是用来搭配的

我建议使用
\u open()
\u seal()
变体,而不是
\u public\u encrypt()
\u private\u decrypt()
变体--公钥机制仅用于会话密钥传输和数字签名。公钥算法用于随机数据(或几乎随机的数据)。将非随机数据与公钥算法一起使用肯定是对算法的错误使用