Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie den generierten öffentlichen Schlüssel und den privaten Schlüssel zur Ver- und Entschlüsselung in PHP

So verwenden Sie den generierten öffentlichen Schlüssel und den privaten Schlüssel zur Ver- und Entschlüsselung in PHP

墨辰丷
墨辰丷Original
2018-06-11 14:01:133759Durchsuche

Dieser Artikel stellt hauptsächlich die Verschlüsselungs- und Entschlüsselungsmethode vor, die den generierten öffentlichen Schlüssel und den privaten Schlüssel in PHP verwendet. Ich hoffe, dass er für alle hilfreich ist.

Wenn der PHP-Server mit dem Client interagiert und eine offene API bereitstellt, ist es normalerweise erforderlich, sensible Teile der API-Datenübertragung zu verschlüsseln. Zu diesem Zeitpunkt kann sich die asymmetrische RSA-Verschlüsselung als nützlich erweisen . Erklären Sie, wie Sie PHP zum Implementieren der Datenverschlüsselung und -entschlüsselung verwenden. Der erste Schritt bei der Verschlüsselung und Entschlüsselung besteht darin, ein Paar aus öffentlichem Schlüssel und privatem Schlüssel zu generieren öffentlicher Schlüssel (und umgekehrt)

Laden Sie das Open-Source-RSA-Schlüsselgenerierungstool openssl herunter (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 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

Wie oben zu sehen ist, wird der private Schlüssel übergeben. Der entsprechende öffentliche Schlüssel kann generiert werden. Daher verwenden wir den privaten Schlüssel private_key.pem auf der Serverseite und der öffentliche Schlüssel wird an Front-Ends wie Android und iOS verteilt

2. Verwenden Sie den generierten öffentlichen Schlüssel und den privaten Schlüssel in PHP zur Ver- und Entschlüsselung, gehen Sie direkt zum Code

<?php
$private_key = &#39;-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl
TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/
Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB
AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH
2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6
ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL
3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq
deJU/cHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+
qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f
oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2
4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL
QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY
yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c
-----END RSA PRIVATE KEY-----&#39;;

$public_key = &#39;-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt
3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl
Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o
2n1vP1D+tD3amHsK7QIDAQAB
-----END PUBLIC KEY-----&#39;;

//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";
print_r($pu_key);echo "\n";


$data = "aassssasssddd";//原始数据
$encrypted = ""; 
$decrypted = ""; 

echo "source data:",$data,"\n";

echo "private key encrypt:\n";

openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密
$encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
echo $encrypted,"\n";

echo "public key decrypt:\n";

openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来
echo $decrypted,"\n";

echo "---------------------------------------\n";
echo "public key encrypt:\n";

openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密
$encrypted = base64_encode($encrypted);
echo $encrypted,"\n";

echo "private key decrypt:\n";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密
echo $decrypted,"\n";

Zusammenfassung

: Das Obige ist der gesamte Inhalt von Ich hoffe, dass dieser Artikel für das Lernen aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP implementiert die Funktion des dynamischen Hinzufügens von Bildwasserzeichen entsprechend der Farbumgebung

Prinzip des PHP-Ereignismechanismus

PHP implementiert die Funktion zum Erfassen von Bildern aus Online-Alben mit Anti-Blutegel-Einstellungen

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den generierten öffentlichen Schlüssel und den privaten Schlüssel zur Ver- und Entschlüsselung in PHP. 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