Heim  >  Artikel  >  php教程  >  Ausführliche Erläuterung der Verwendung der PHP-RSA-Verschlüsselung und -Entschlüsselung

Ausführliche Erläuterung der Verwendung der PHP-RSA-Verschlüsselung und -Entschlüsselung

高洛峰
高洛峰Original
2016-12-30 09:17:381531Durchsuche

1. Der erste Schritt bei der Verschlüsselung und Entschlüsselung besteht darin, ein Paar aus öffentlichem Schlüssel und privatem Schlüssel zu generieren. Der mit dem privaten Schlüssel verschlüsselte Inhalt kann mit dem öffentlichen Schlüssel entschlüsselt werden (und umgekehrt)

Laden Sie den Open-Source-RSA-Schlüssel herunter. Generieren Sie das Tool openssl (normalerweise werden Linux-Systeme mit diesem Programm geliefert), entpacken Sie es in einen separaten Ordner, geben Sie das bin-Verzeichnis ein und führen Sie den folgenden Befehl aus:

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

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

2 generierten öffentlichen Schlüssel und privaten Schlüssel für die Ver- und Entschlüsselung in PHP und lädt den Code direkt hoch

$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>";

Häufig gestellte Fragen zur RSA-Konfiguration von PHP:

●Verwendung von drei DLL-Dateien im openSL-Ordner im Codebeispiel der PHP-Entwicklungssprache

1. Wenn Ihr System ein Windows-System ist und sich keine libeay32.dll- und ssleay32.dll-Dateien im system32-Dateiverzeichnis befinden
Dann müssen Sie Kopieren Sie diese beiden Dateien in das System32-Dateiverzeichnis.

2. Wenn es keine php_openssl.dll in Ihrem PHP-Installationsverzeichnis (phpext) gibt

dann legen Sie bitte php_openssl.dll in diesen Ordner

Wie Verschlüsselung und Entschlüsselung Meine Freunde Sie müssen diesen Artikel sorgfältig lesen, er wird von großem Nutzen sein. . .

Ausführlichere Erläuterungen zur Verwendung der PHP-RSA-Verschlüsselung und -Entschlüsselung finden Sie auf der chinesischen PHP-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