Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung, wie RSA zum Implementieren von Verschlüsselungs- und Entschlüsselungscode in PHP verwendet wird

Ausführliche Erklärung, wie RSA zum Implementieren von Verschlüsselungs- und Entschlüsselungscode in PHP verwendet wird

伊谢尔伦
伊谢尔伦Original
2017-07-08 10:00:552435Durchsuche

1. Der erste Schritt bei der Ver- und Entschlüsselung besteht darin, ein Paar aus öffentlichem Schlüssel und privatem Schlüssel zu generieren. Der durch den privaten Schlüssel verschlüsselte Inhalt kann durch den öffentlichen Schlüssel entschlüsselt werden

Der Code lautet wie folgt:

Der erste Befehl generiert die ursprüngliche private RSA-Schlüsseldatei rsa_private_key.pem und die Der zweite Befehl konvertiert den ursprünglichen privaten RSA-Schlüssel in das pkcs8-Format. Der dritte Befehl generiert den öffentlichen RSA-Schlüssel rsa_public_key.pem
Aus dem Obigen ist ersichtlich, dass der entsprechende öffentliche Schlüssel über den privaten Schlüssel generiert werden kann, daher verwenden wir den privaten Schlüssel private_key.pem auf der Serverseite, und der öffentliche Schlüssel wird an

Android ausgegeben
openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
Arbeiten Sie mit Frontends wie iOS


2. Verwenden Sie den generierten öffentlichen Schlüssel und den privaten Schlüssel Um in PHP zu ver- und entschlüsseln , geben Sie den Code direkt ein

Der Code lautet wie folgt:


RSA-Konfiguration für PHP

FAQ
$fp=fopen("rsa/rsa_private_key.pem","r"); //你的私钥文件路径
$private_key=fread($fp,8192);
fclose($fp);
$fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公钥文件路径
$public_key=fread($fp1,8192);
fclose($fp1);
//echo $private_key; 
$pi_key=openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id 
Resource
 id 
$pu_key=openssl_pkey_get_public($public_key );//这个函数可用来判断公钥是否是可用的
print_r($pi_key);echo "\n"; echo "<br>";
print_r($pu_key);echo "\n"; echo "<br>";
echo "<hr>";
$data=&#39;php ras加密算法&#39;;
$encrypted = ""; 
$decrypted = ""; 
echo "加密的源数据:".$data."\n"; echo "<br>";
echo "private key encrypt:\n"; echo "<br>";
openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密 
$encrypted = base64_encode($encrypted);//加密后的内容通常含有
特殊字符
,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url
安全
的 
echo &#39;私钥加密后:&#39;.$encrypted."\n"; echo "<br>";echo "<br>";
echo "public key decrypt:\n"; echo "<br>";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来 
echo &#39;公钥解密后:&#39;.$decrypted."\n"; echo "<br>";
echo "<hr>";
echo "public key encrypt:\n"; echo "<br>";
openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密 
$encrypted = base64_encode($encrypted); 
echo $encrypted,"\n"; echo "<br>";
echo "private key decrypt:\n"; echo "<br>";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密 
echo $decrypted,"\n"; echo "<br>";

: ●openssl-Datei im Codebeispiel der PHP-Entwicklungssprache Verwendung der drei DLL-Dateien im Ordner 1 Wenn Ihr System ein Windows-System und es gibt keine libeay32.dll- und ssleay32.dll-Dateien im System32-Dateiverzeichnis

, dann müssen Sie diese beiden Dateien in das System32-Dateiverzeichnis kopieren.

2. Wenn sich in Ihrem PHP-

-Installationsverzeichnis (phpext) keine php_openssl.dll

befindet, legen Sie bitte php_openssl.dll in diesem Ordner ab

Freunde, die Ver- und Entschlüsselung mögen, sollten diesen Artikel sorgfältig lesen und viel davon profitieren. . .

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie RSA zum Implementieren von Verschlüsselungs- und Entschlüsselungscode in PHP verwendet wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn