Beispiel für PHP-RSA-Verschlüsselung und -Entschlüsselung
Nachdruck von: http://orangeholic.iteye.com/blog/2161771
Referenz: http://blog.csdn.net/clh604/article/details/20224735
1. Schlüssel und öffentlichen Schlüssel generieren
Sie müssen die OpenSSL-Umgebung vorbereiten, bevor Sie beginnen
Linux muss das OpenSSL-Toolpaket, Portal
, installieren
http://www.openssl.org/source/
Sie müssen das OpenSSL-Programm unter Windows, Portal
installieren
http://slproweb.com/products/Win32OpenSSL.html
Wenn Sie es nicht installieren möchten, können Sie den in diesem Beispiel bereitgestellten Schlüssel und öffentlichen Schlüssel zum Testen verwenden.
Schlüsselgenerierung
OpenSSL Genrsa wird zum Generieren von privaten RSA-Schlüsseldateien verwendet. Die Länge des privaten Schlüssels und der Passwortschutz können während der Generierung angegeben werden. Die spezifischen Parameter finden Sie in der Dokumentation.
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 gibt den privaten Schlüssel mit dem Dateinamen private_key.pem aus Schlüssel. Öffentlicher 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 geben den öffentlichen Schlüssel an Front-Ends wie Android und iOS aus. und umgekehrt. Kopieren Sie beim Kopieren nur den OpenSSL-Backend-Inhalt.
2.PHP verwendet RSA-Verschlüsselung und -Entschlüsselung
Bevor Sie beginnen, müssen Sie die PHP-OpenSL-Umgebung vorbereiten, die PHP-OpenSL-Erweiterung aktivieren und das Fenster in der PHP-Konfigurationsdatei php.ini in
ändern.
;extension=php_openssl.dll
Wechseln Sie zu
extension=php_openssl.dll
Der Code lautet wie folgt:
<code><span><span><?php</span><span>$private_key</span> = <span>'-----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-----'</span>; <span>$public_key</span> = <span>'-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt 3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o 2n1vP1D+tD3amHsK7QIDAQAB -----END PUBLIC KEY-----'</span>; <span>//echo $private_key;</span><span>$pi_key</span> = openssl_pkey_get_private(<span>$private_key</span>);<span>//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id</span><span>$pu_key</span> = openssl_pkey_get_public(<span>$public_key</span>);<span>//这个函数可用来判断公钥是否是可用的</span> print_r(<span>$pi_key</span>);<span>echo</span><span>"\n"</span>; print_r(<span>$pu_key</span>);<span>echo</span><span>"\n"</span>; <span>$data</span> = <span>"aassssasssddd"</span>;<span>//原始数据</span><span>$encrypted</span> = <span>""</span>; <span>$decrypted</span> = <span>""</span>; <span>echo</span><span>"source data:"</span>,<span>$data</span>,<span>"\n"</span>; <span>echo</span><span>"private key encrypt:\n"</span>; openssl_private_encrypt(<span>$data</span>,<span>$encrypted</span>,<span>$pi_key</span>);<span>//私钥加密</span><span>$encrypted</span> = base64_encode(<span>$encrypted</span>);<span>//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的</span><span>echo</span><span>$encrypted</span>,<span>"\n"</span>; <span>echo</span><span>"public key decrypt:\n"</span>; openssl_public_decrypt(base64_decode(<span>$encrypted</span>),<span>$decrypted</span>,<span>$pu_key</span>);<span>//私钥加密的内容通过公钥可用解密出来</span><span>echo</span><span>$decrypted</span>,<span>"\n"</span>; <span>echo</span><span>"---------------------------------------\n"</span>; <span>echo</span><span>"public key encrypt:\n"</span>; openssl_public_encrypt(<span>$data</span>,<span>$encrypted</span>,<span>$pu_key</span>);<span>//公钥加密</span><span>$encrypted</span> = base64_encode(<span>$encrypted</span>); <span>echo</span><span>$encrypted</span>,<span>"\n"</span>; <span>echo</span><span>"private key decrypt:\n"</span>; openssl_private_decrypt(base64_decode(<span>$encrypted</span>),<span>$decrypted</span>,<span>$pi_key</span>);<span>//私钥解密</span><span>echo</span><span>$decrypted</span>,<span>"\n"</span>;</span></code>
Ergebnis:
<code>原数据为<span>:</span>我的帐号是<span>:shiki</span>,密码是<span>:matata</span> 加密成功,加密后数据(base64_encode后)为<span>:X6q/u/hUW4o7z0tETaWuRt3ahvgT9/m+yiqABDDs9ccHRekB0YU9UAv5zA/VZawLoDVhiyl9bAc3WHeRIexz+gybUJKkI69RFkWHL5n3llfCeTdnSXIQ4Aa+ysfmCicxXwMeP2vUWZBcxJiRVLiGGe1shJjw/TxvmocOlaFRVnQ=</span> 解密成功,解密后数据为<span>:</span>我的帐号是<span>:shiki</span>,密码是<span>:matata</span></code>
Das Obige stellt das PHP-RSA-Verschlüsselungs- und -Entschlüsselungsbeispiel einschließlich der relevanten Inhalte vor. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Nginx ist eine Software, die häufig in Webservern, Load Balancern, Reverse-Proxys und Caches verwendet wird. Bei der Netzwerkübertragung wird zunehmend auf Datenverschlüsselung und -sicherheit geachtet. Um die Sicherheit der Kommunikation zu verbessern, kann die OpenSSL-Bibliothek zur Implementierung des SSL/TLS-Protokolls zum Schutz der Übertragung sensibler Daten genutzt werden. In diesem Artikel wird erläutert, wie Sie mit Nginx und der OpenSSL-Bibliothek eine sicherere Kommunikation erreichen. Installieren und konfigurieren Sie die OpenSSL-Bibliothek. Zuerst müssen Sie die OpenSSL-Bibliothek auf dem Server installieren. machen kann

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

1. Funktionsübersicht Mit der Keyspace-Benachrichtigung können Clients Ereignisse empfangen, die Rediskey-Änderungen auf irgendeine Weise ändern, indem sie Kanäle oder Muster abonnieren. Alle Befehle, die Tastenkombinationen ändern. Alle Schlüssel, die den Befehl LPUSHkeyvalue[Wert…] erhalten haben. Alle abgelaufenen Schlüssel in der Datenbankdatenbank. Ereignisse werden über die Abonnement- und Veröffentlichungsfunktionen (Pub/Sub) von Redis verteilt, sodass alle Clients, die Abonnement- und Veröffentlichungsfunktionen unterstützen, die Keyspace-Benachrichtigungsfunktion ohne Änderungen direkt verwenden können. Da die aktuellen Abonnement- und Veröffentlichungsfunktionen von Redis bei Ihrem Programm eine Fire-and-Forget-Strategie verfolgen

Jedes Jahr bevor Apple eine neue Hauptversion von iOS und macOS veröffentlicht, können Benutzer die Betaversion mehrere Monate im Voraus herunterladen, um sie zuerst zu testen. Da die Software sowohl von der Öffentlichkeit als auch von Entwicklern verwendet wird, hat Apple für beide Entwickler- und öffentliche Versionen herausgebracht, bei denen es sich um öffentliche Betaversionen der Entwickler-Betaversionen handelt. Was ist der Unterschied zwischen der Entwicklerversion und der öffentlichen Version von iOS? Im wahrsten Sinne des Wortes handelt es sich bei der Entwicklerversion um eine Entwickler-Betaversion und bei der öffentlichen Version um eine öffentliche Betaversion. Die Entwicklerversion und die öffentliche Version richten sich an unterschiedliche Zielgruppen. Die Entwicklerversion wird von Apple zum Testen durch Entwickler verwendet. Sie benötigen ein Apple-Entwicklerkonto, um sie herunterzuladen und zu aktualisieren.

Einführung in die Verwendung von OpenSSL zum Generieren eines MySQL-SSL-Zertifikats: MySQL ist ein weit verbreitetes relationales Datenbanksystem. Es ist sehr wichtig, das SSL-Protokoll (SecureSocketsLayer) für die verschlüsselte Kommunikation in tatsächlichen Produktionsumgebungen zu verwenden. In diesem Artikel wird die Verwendung des OpenSSL-Tools zum Generieren eines MySQL-SSL-Zertifikats vorgestellt und entsprechende Codebeispiele bereitgestellt. Schritte: OpenSSL installieren: Stellen Sie zunächst sicher, dass OpenSSL auf Ihrem Computer installiert ist

Eine nicht patchbare Schwachstelle im Yubico-Zwei-Faktor-Authentifizierungsschlüssel hat die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte beeinträchtigt. Die Feitian A22 JavaCard und andere Geräte, die TPMs der Infineon SLB96xx-Serie verwenden, sind ebenfalls anfällig.Alle

Aufgetretene Probleme: Während des Entwicklungsprozesses werden Sie auf Schlüssel stoßen, die nach bestimmten Regeln stapelweise gelöscht werden müssen, z. B. login_logID (ID ist eine Variable). Jetzt müssen Sie Daten wie „login_log*“ löschen, aber redis selbst verfügt nur über Befehlsschlüssel für Klassenschlüsselwerte, es gibt jedoch keinen Befehl zum Stapellöschen einer bestimmten Klasse. Lösung: Zuerst abfragen, dann löschen, xargs verwenden, um Parameter zu übergeben (xargs kann Pipe- oder Standardeingabedaten (stdin) in Befehlszeilenparameter umwandeln), zuerst die Abfrageanweisung ausführen und dann den abgefragten Schlüsselwert und die ursprünglichen del-Parameter entfernen. löschen. redis-cliKEYSkey* (Suchbedingung)|xargsr

In Java bedeutet „privat“ „privat“ und ist ein Zugriffskontrollmodifikator, der zum Ändern von Klassen, Eigenschaften und Methoden verwendet wird. Mit „private“ geänderte Klassenmitglieder können nur von den Methoden der Klasse selbst aufgerufen und geändert werden und können von keiner anderen Klasse (einschließlich Unterklassen der Klasse) aufgerufen und referenziert werden. Daher verfügt der private Modifikator über die höchste Schutzstufe.
