Heim >Backend-Entwicklung >PHP-Tutorial >So verschlüsseln Sie große Nachrichten mit asymmetrischen Schlüssel und PHPSeclib

So verschlüsseln Sie große Nachrichten mit asymmetrischen Schlüssel und PHPSeclib

Christopher Nolan
Christopher NolanOriginal
2025-02-18 09:11:12381Durchsuche

Dieses Tutorial zeigt, wie große Nachrichten mit asymmetrischen Schlüssel und der PhpSeclib -Bibliothek verschlüsselt werden können.


How to Encrypt Large Messages with Asymmetric Keys and phpseclib Schlüsselkonzepte

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 von

RSA 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.

Einführung

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.

Verschlüsselungsalgorithmen und Schlüssel

Zwei Hauptverschlüsselungsalgorithmus -Typen existieren:

  1. Symmetrische Algorithmen: Verwenden Sie denselben Schlüssel für Verschlüsselung und Entschlüsselung. Der Schlüsselaustausch ist eine Verwundbarkeit.
  2. Asymmetrische Algorithmen: Verwenden Sie separate öffentliche und private Schlüssel. Die mit dem öffentlichen Schlüssel verschlüsselten Daten ist nur mit dem entsprechenden privaten Schlüssel entschlüsselt. Dies löst das Schlüsselverteilungsproblem, da der öffentliche Schlüssel ohne die Sicherheit geteilt werden kann.

Auswählen von Verschlüsselungsalgorithmen

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.

RSA -Schlüsselbeschränkungen

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 Lösung: Hybridverschlüsselung

Die optimale Lösung kombiniert symmetrische und asymmetrische Verschlüsselung:

  1. Symmetrische Verschlüsselung: Verschlüsseln Sie die große Nachricht mit einem zufällig generierten symmetrischen Schlüssel.
  2. Asymmetrische Verschlüsselung: Verschlüsseln Sie den symmetrischen Schlüssel mit dem öffentlichen Schlüssel des Empfängers.
  3. Übertragung: Senden Sie die verschlüsselte Nachricht und den verschlüsselten symmetrischen Schlüssel an den Empfänger.

Der Empfänger kehrt den Prozess um: entschlüsselt den symmetrischen Schlüssel mit seinem privaten Schlüssel und entschlüsselt dann die Nachricht.

Implementierung mit PHPSeclib

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 .

Tasten erzeugen

<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>

Verschlüsselungsfunktion

<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>

Entschlüsselungsfunktion

<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>

Schlussfolgerung

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!

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