In PHP, Bin2hex und OpenSSL_encrypt sind zwei sehr nützliche Funktionen, mit denen binäre Daten in hexadezimale Darstellungen umwandeln und Daten verschlüsseln werden. In diesem Artikel wird erläutert, wie diese beiden Funktionen zusammen verwendet werden, um ein tatsächliches Verschlüsselungsbeispiel bereitzustellen.
Bin2hex ist eine integrierte Funktion in PHP, die Binärdaten (normalerweise Zeichenfolgen oder andere Daten) in Zeichenfolgen im hexadezimalen Format umwandelt. Umwandeln Sie beispielsweise Bytedaten in eine hexadezimale Darstellung, die sicher gespeichert und übertragen werden kann.
Beispiel:
<span><span><span class="hljs-variable">$binary_data</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$hex_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$binary_data</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex_data</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe:68656c6c6f</span></span><span>
</span></span>OpenSSL_encrypt ist eine leistungsstarke Verschlüsselungsfunktion, die die OpenSSL -Bibliothek zum Verschlüsseln von Daten verwendet. Diese Funktion unterstützt eine Vielzahl von Verschlüsselungsalgorithmen wie AES, DES, Blowfish usw. und erfordert normalerweise eine Verschlüsselungsmethode, eine Verschlüsselungsschlüssel und Daten, die verschlüsselt werden müssen.
Beispiel:
<span><span><span class="hljs-variable">$plaintext</span></span><span> = </span><span><span class="hljs-string">"This is a secret message."</span></span><span>;
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"secretkey12345"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_encrypt</span></span><span>(</span><span><span class="hljs-variable">$plaintext</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$encrypted</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe加密后的密文</span></span><span>
</span></span>Das Szenario, in dem diese beiden Funktionen verwendet werden, ist normalerweise bei der Verschlüsselung von Binärdaten, dass wir am Ende eine hexadezimale Zeichenfolge haben, die leicht zu verarbeiten und zu übertragen ist. Dies ist nützlich für einige Anwendungsszenarien, in denen verschlüsselte Daten erforderlich sind, um verschlüsselte Daten in Text zu speichern, beispielsweise in einer Datenbank oder über ein Netzwerk übertragen.
Nehmen wir an, wir haben einige Klartextdaten, die AES-128-ECB verschlüsselt werden müssen und das Ergebnis in eine hexadezimale Zeichenfolge für die Speicherung umwandeln müssen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Original -Klartextdaten</span></span><span>
</span><span><span class="hljs-variable">$plaintext</span></span><span> = </span><span><span class="hljs-string">"Sensitive information here"</span></span><span>;
</span><span><span class="hljs-comment">// Verschlüsselungsschlüssel und Methoden</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"encryptionkey123"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-comment">// Verschlüsselung ausführen</span></span><span>
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_encrypt</span></span><span>(</span><span><span class="hljs-variable">$plaintext</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-comment">// verwenden bin2hex Verschlüsselte Binärdaten in hexadezimale Zeichenfolge konvertieren</span></span><span>
</span><span><span class="hljs-variable">$hex_encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$encrypted</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Verschlüsselte hexadezimale Zeichenfolge: "</span></span><span> . </span><span><span class="hljs-variable">$hex_encrypted</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>In praktischen Anwendungen sind das Verschlüsselungsergebnis in der Regel binäre Daten, die unpraktisch für das Speichern oder Übertragen sind. Insbesondere wenn wir verschlüsselte Daten in einer Datenbank speichern oder sie über das Netzwerk übertragen müssen, können Binärdaten zu Codierungsproblemen führen. Mit Bin2hex können Sie verschlüsselte Binärdaten in ASCII -Zeichenfolgen umwandeln, die sicher gespeichert oder übertragen werden können.
Wenn Sie verschlüsselte Daten in einer Datenbank speichern müssen, wird diese normalerweise in das hexadezimale Format konvertiert, da einige Datenbankfelder möglicherweise nicht direkt das Speichern von Binärdaten unterstützen. Das Konvertieren verschlüsselter Daten in lagerbare hexadezimale Zeichenfolgen über Bin2hex sorgt für die Kompatibilität von Daten während der Übertragung und Speicherung.
Bei der Übertragung verschlüsselter Daten, insbesondere durch HTTP -Anforderungen oder andere Textprotokolle, können binäre Daten falsch codiert oder verloren gehen. Durch die Konvertierung verschlüsselter Daten in das hexadezimale Format können diese Probleme vermieden werden und die Integrität verschlüsselter Daten sichergestellt werden.
Der Entschlüsselungsprozess erfordert natürlich auch die Verwendung von Hex2Bin , um die Hex -Zeichenfolge wieder in binäre Daten umzuwandeln und sie dann durch OpenSSL_Decrypt zu entschlüsseln.
Beispiel:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Verschlüsselte hexadezimale Zeichenfolge</span></span><span>
</span><span><span class="hljs-variable">$hex_encrypted</span></span><span> = </span><span><span class="hljs-string">"2b7e151628aed2a6abf7158809cf4f3c"</span></span><span>;
</span><span><span class="hljs-comment">// Konvertieren Sie die Hexadezimalzeichenfolge in binäre Daten</span></span><span>
</span><span><span class="hljs-variable">$encrypted_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hex2bin</span></span><span>(</span><span><span class="hljs-variable">$hex_encrypted</span></span><span>);
</span><span><span class="hljs-comment">// Entschlüsseln</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"encryptionkey123"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-variable">$decrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_decrypt</span></span><span>(</span><span><span class="hljs-variable">$encrypted_data</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Entschlüsseln后的明文: "</span></span><span> . </span><span><span class="hljs-variable">$decrypted</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Durch die Kombination von Bin2hex und OpenSSL_encrypt können wir verschlüsselte Binärdaten in hexadezimale Zeichenfolgen für einfache Speicherung und Übertragung umwandeln. Dieser Ansatz verbessert nicht nur die Portabilität von Daten, sondern gewährleistet auch die Sicherheit und Integrität verschlüsselter Daten. Hoffentlich können Sie anhand der Beispiele in diesem Artikel die Anwendung dieser beiden Funktionen in tatsächlichen Projekten beherrschen, um die Effizienz und Zuverlässigkeit der Datenverarbeitung zu verbessern.