Heim >Backend-Entwicklung >PHP-Tutorial >So verschlüsseln Sie große Nachrichten mit asymmetrischen Schlüssel und PHPSeclib
Dieses Tutorial zeigt, wie große Nachrichten mit asymmetrischen Schlüssel und der PhpSeclib -Bibliothek verschlüsselt werden können.
asymmetrische Verschlüsselung wie RSA löst die wichtigsten Herausforderungen der Verteilung, indem sie einen öffentlichen Schlüssel für die Verschlüsselung und einen privaten Schlüssel zur Entschlüsselung einsetzen. Dies ermöglicht eine sichere Freigabe des öffentlichen Schlüssels, da nur der private Schlüsselinhaber entschlüsseln kann.
Die Begrenzung vonRSA ist die eingeschränkte Klartextkapazität; Ein 2048-Bit-Schlüssel behandelt typischerweise maximal 256 Bytes.
Hybridverschlüsselung (kombiniert symmetrische und asymmetrische Methoden) überwindet dies. Ein symmetrischer Schlüssel verschlüsselt die Nachricht, dann wird dieser symmetrische Schlüssel mit dem öffentlichen Schlüssel des Empfängers verschlüsselt und angehängt. Der Empfänger entschlüsselt den symmetrischen Schlüssel mit seinem privaten Schlüssel und entschlüsselt ihn dann, um die Nachricht zu entschlüsseln.
PHP Secure Communications Library (PHPSECLIB) ist eine kostenlose Open-Source-Bibliothek, die reine Php-Implementierungen verschiedener Verschlüsselungsalgorithmen anbietet, einschließlich RSA und symmetrischer Algorithmen (DES, AES). Es unterstützt Hybridverschlüsselung und Funktionen auch ohne schnellere Verschlüsselungsverlängerungen zuverlässig.
Verschlüsseln sensibler Daten vor der Übertragung ist von entscheidender Bedeutung. Die Verschlüsselung wandelt Klartext (normale Daten) mit einem Schlüssel und einem Algorithmus in Ciphertext (geheime Daten) um. Die Entschlüsselung kehrt diesen Prozess um.
Der Verschlüsselungsalgorithmus wendet mathematische Operationen auf die numerischen Werte des Schlüssels und der Klartext an, um einen Chiffretext zu erzeugen. Größere Schlüssel verbessern die Sicherheit.
Schlüsselverteilung ist eine kritische Herausforderung: Wie können Schlüssel an autorisierte Empfänger sicher übertragen? Die Lösung hängt vom Algorithmus und dem Schlüsseltyp ab.
Zwei Hauptverschlüsselungsalgorithmus -Typen existieren:
starke Algorithmen stützen sich auf fortgeschrittene Mathematik. Die Stärke wird durch die für die Entschlüsselung ohne den Schlüssel erforderliche Zeit bestimmt. Das National Institute of Standards and Technology (NIST) bietet Empfehlungen. Zu den häufigen asymmetrischen Algorithmen gehören RSA und DSA, wobei RSA aufgrund seiner Skalierbarkeit häufig kommerziell bevorzugt wird. Rijndael (AES) ist ein weit verbreiteter symmetrischer Algorithmus.
Während asymmetrische Algorithmen die Schlüsselverteilung lösen, hat RSA eine begrenzte Klartextverschlüsselungskapazität. Ein 2048-Bit-Schlüssel kann nur bis zu 256 Bytes verschlüsseln.
Die optimale Lösung kombiniert symmetrische und asymmetrische Verschlüsselung:
Der Empfänger kehrt den Prozess um: entschlüsselt den symmetrischen Schlüssel mit seinem privaten Schlüssel und entschlüsselt dann die Nachricht.
Dieses Beispiel verwendet die PHP Secure Communications Library (PHPSECLIB). Installieren Sie es über den Komponisten. Die Dokumentation erfolgt unter https://www.php.cn/link/4662efebaa2ef1b42bb1097a941393ef .
<code class="language-php">$rsa = new Crypt_RSA(); $keys = $rsa->createKey(2048); file_put_contents('key.pri', $keys['privatekey']); file_put_contents('key.pub', $keys['publickey']);</code>
<code class="language-php">function encrypt_message($plaintext, $asym_key, $key_length = 150) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $sym_key = crypt_random_string($key_length); $rij->setKey($sym_key); $ciphertext = $rij->encrypt($plaintext); $ciphertext = base64_encode($ciphertext); $rsa->loadKey($asym_key); $sym_key = $rsa->encrypt($sym_key); $sym_key = base64_encode($sym_key); $len = strlen($sym_key); $len = dechex($len); $len = str_pad($len, 3, '0', STR_PAD_LEFT); $message = $len . $sym_key . $ciphertext; return $message; }</code>
<code class="language-php">function decrypt_message($message, $asym_key) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $len = substr($message, 0, 3); $len = hexdec($len); $sym_key = substr($message, 0, $len); $message = substr($message, 3); $ciphertext = substr($message, $len); $ciphertext = base64_decode($ciphertext); $rsa->loadKey($asym_key); $sym_key = base64_decode($sym_key); $sym_key = $rsa->decrypt($sym_key); $rij->setKey($sym_key); $plaintext = $rij->decrypt($ciphertext); return $plaintext; }</code>
sichere Datenkommunikation ist unerlässlich. Die Hybridverschlüsselung, die sowohl symmetrische als auch asymmetrische Algorithmen nutzt, bietet eine robuste Lösung. PHPSECLIB bietet ein zuverlässiges und vielseitiges Tool zur Implementierung dieses Ansatzes in PHP. Der Quellcode ist auf GitHub verfügbar (Link im Originaltext angegeben).
Das obige ist der detaillierte Inhalt vonSo verschlüsseln Sie große Nachrichten mit asymmetrischen Schlüssel und PHPSeclib. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!