


Erläuterung der in PHP (Code) häufig verwendeten Verschlüsselungs- und Entschlüsselungsalgorithmen
Der Inhalt dieses Artikels befasst sich mit der Erklärung (dem Code) der in PHP häufig verwendeten Verschlüsselungs- und Entschlüsselungsalgorithmen. Ich hoffe, dass er für Sie hilfreich ist.
Hier stellen wir hauptsächlich drei häufig verwendete Verschlüsselungs- und Entschlüsselungsalgorithmen vor:
Methode 1:
/** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCODE 加密;DECODE 解密 * @param string $key 密匙 * @param int $expiry 有效期 * @return string */ function authcode($string, $operation = 'DECODE', $key = 'encrypt', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya . md5($keya . $keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); // 产生密匙簿 for ($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度 for ($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } // 核心加解密部分 for ($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if ($operation == 'DECODE') { // 验证数据有效性,请看未加密明文的格式 if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16) ) { return substr($result, 26); } else { return ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc . str_replace('=', '', base64_encode($result)); } }
Verwendung:
$string = '加密字符串'; // 加密 $encode = authcode($string, 'ENCODE'); echo $encode . '</br>'; // a2f4bSYyUrTum1nAAA9X9BrC4Z3DZazcSa4eLcvDoCnmYc1LTdvtqS4aCds // 解密 $decode = authcode($encode, 'DECODE'); echo $decode; // 加密字符串
Methode 2:
/** * @param $string 要加密/解密的字符串 * @param $operation 类型,E 加密;D 解密 * @param string $key 密钥 * @return mixed|string */ function encrypt($string, $operation, $key = 'encrypt') { $key = md5($key); $key_length = strlen($key); $string = $operation == 'D' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string; $string_length = strlen($string); $rndkey = $box = array(); $result = ''; for ($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($key[$i % $key_length]); $box[$i] = $i; } for ($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for ($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if ($operation == 'D') { if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) { return substr($result, 8); } else { return ''; } } else { return str_replace('=', '', base64_encode($result)); } }
Verwendung:
$string = '加密字符串'; // 加密 $encode = encrypt($string, 'E'); echo $encode . '</br>'; // 0Jzym5UzkRKH726U7Pyt7ixzLz9YEEA // 解密 $decode = encrypt($encode, 'D'); echo $decode; // 加密字符串
Methode 3:
/** * @param $data 要加密的字符串 * @param $key 密钥 * @return string */ function encrypt($data, $key = 'encrypt') { $key = md5($key); $x = 0; $len = strlen($data); $l = strlen($key); $char = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= $key{$x}; $x++; } $str = ''; for ($i = 0; $i < $len; $i++) { $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return base64_encode($str); } /** * @param $data 要解密的字符串 * @param $key 密钥 * @return string */ function decrypt($data, $key = 'encrypt') { $key = md5($key); $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); $char = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= substr($key, $x, 1); $x++; } $str = ''; for ($i = 0; $i < $len; $i++) { if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) { $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); } else { $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return $str; }
Verwendung:
$string = '加密字符串'; // 加密 $encode = encrypt($string); echo $encode . '</br>'; // Gr0DHeHrRw7KGBLcSOzj // 解密 $decode = decrypt($encode); echo $decode; // 加密字符串
Das obige ist der detaillierte Inhalt vonErläuterung der in PHP (Code) häufig verwendeten Verschlüsselungs- und Entschlüsselungsalgorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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



Titel: Datenverschlüsselung und -entschlüsselung mit ReactQuery und Datenbank Einführung: In diesem Artikel wird erläutert, wie Sie ReactQuery und Datenbank für die Datenverschlüsselung und -entschlüsselung verwenden. Wir werden ReactQuery als Datenverwaltungsbibliothek verwenden und es mit der Datenbank kombinieren, um Datenverschlüsselungs- und -entschlüsselungsvorgänge durchzuführen. Durch die Kombination dieser beiden Technologien können wir sensible Daten sicher speichern und übertragen und bei Bedarf Verschlüsselungs- und Entschlüsselungsvorgänge durchführen, um die Datensicherheit zu gewährleisten. Text: 1. ReactQue

Da WeChat-Miniprogramme auf dem Markt für mobile Anwendungen immer beliebter werden, erhält auch ihre Entwicklung immer mehr Aufmerksamkeit. In kleinen Programmen wird häufig PHP als häufig verwendete Backend-Sprache verwendet, um die Ver- und Entschlüsselung sensibler Daten zu übernehmen. In diesem Artikel wird erläutert, wie Sie mit PHP die Verschlüsselung und Entschlüsselung im WeChat-Applet implementieren. 1. Was sind Verschlüsselung und Entschlüsselung? Unter Verschlüsselung versteht man die Umwandlung sensibler Daten in eine unlesbare Form, um sicherzustellen, dass die Daten während der Übertragung nicht gestohlen oder manipuliert werden. Unter Entschlüsselung versteht man die Wiederherstellung verschlüsselter Daten in Originaldaten. In kleinen Programmen umfassen die Verschlüsselung und Entschlüsselung normalerweise

Verschlüsseln und Entschlüsseln sensibler Daten mithilfe der Yii-Framework-Middleware Einführung: In modernen Internetanwendungen sind Datenschutz und Datensicherheit sehr wichtige Themen. Um sicherzustellen, dass die sensiblen Daten der Benutzer nicht für unbefugte Besucher zugänglich sind, müssen wir diese Daten verschlüsseln. Das Yii-Framework bietet uns eine einfache und effektive Möglichkeit, die Funktionen zum Verschlüsseln und Entschlüsseln sensibler Daten zu implementieren. In diesem Artikel erfahren Sie, wie Sie dies mithilfe der Middleware des Yii-Frameworks erreichen. Einführung in das Yii-Framework Das Yii-Framework ist ein leistungsstarkes PHP-Framework.

Dieser Artikel ist ein Tutorial zum Verschlüsseln und Entschlüsseln von Dateien ohne die Verwendung von Verschlüsselungs- und Entschlüsselungstools von Drittanbietern. Ein Tutorial zum Hinzufügen von Verschlüsselungs- und Entschlüsselungsmethoden zum Rechtsklick-Menü von Win11 Erstellen Sie ein Backup, bevor Sie fortfahren. 1. Drücken Sie zunächst die Tastenkombination [Win+R] auf der Tastatur, um Ausführen zu öffnen, geben Sie dann den Befehl [regedit] ein und drücken Sie [OK oder Enter], um den Registrierungseditor zu öffnen muss zugelassen werden Nimmt diese App Änderungen an Ihrem Gerät vor? Klicken Sie auf [Ja]; 3. Erweitern Sie das Fenster des Registrierungseditors auf den folgenden Pfad: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

PHP-Postfachentwicklung: E-Mail-Verschlüsselungs- und Entschlüsselungsfunktionen realisieren Mit der zunehmenden Entwicklung der Informationsübertragung ist E-Mail zu einer der wichtigsten Kommunikationsmethoden für Menschen geworden. Die daraus resultierenden Sicherheitsprobleme haben jedoch nach und nach die Aufmerksamkeit der Menschen auf sich gezogen. Um die Sicherheit von E-Mails zu gewährleisten, sind Verschlüsselung und Entschlüsselung zu wichtigen Aspekten beim Senden und Empfangen von E-Mails geworden. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP E-Mail-Verschlüsselungs- und -Entschlüsselungsfunktionen entwickeln, um die E-Mail-Sicherheit zu verbessern. 1. Prinzip und Funktion der Verschlüsselung Die E-Mail-Verschlüsselung besteht darin, den E-Mail-Inhalt mithilfe eines bestimmten Algorithmus so umzuwandeln, dass er zusätzlich zum Empfänger gelangt

Die Java-Funktionsbibliothek bietet eine Fülle von Verschlüsselungs- und Entschlüsselungstools, darunter JCE, JCA, Apache CommonsCrypt usw. JCE stellt Verschlüsselungsalgorithmen und -funktionen bereit, JCA stellt Schnittstellen für den Zugriff auf Verschlüsselungsdienstanbieter bereit und Apache CommonsCrypt enthält weitere Verschlüsselungsalgorithmen und -tools. Der praktische Fall zeigt, wie man mit JCE Text mit AES verschlüsselt und Base64-codierten Chiffretext generiert.

Einführung in Datenverschlüsselungs- und -entschlüsselungsbeispiele beim Andocken an die API-Schnittstelle von Tencent Cloud Server mit PHP: Beim Andocken an die API-Schnittstelle von Tencent Cloud Server ist die Sicherheit der Daten sehr wichtig. Um die Sicherheit der Daten bei der Übertragung und Speicherung zu gewährleisten, müssen wir sensible Informationen verschlüsseln. In diesem Artikel wird erläutert, wie Sie PHP zum Ver- und Entschlüsseln von Daten verwenden, um die Vertraulichkeit und Integrität der Daten zu verbessern. Datenverschlüsselung: Bei API-Anfragen müssen wir vertrauliche Informationen verschlüsseln, um die Datensicherheit zu gewährleisten. Häufig verwendet

Wie verwende ich das SectionReader-Modul von Go, um den Inhalt eines bestimmten Teils einer Datei zu ver- und entschlüsseln? Einführung: In der Entwicklung ist die Verschlüsselung und Entschlüsselung von Dateiinhalten eine sehr häufige Anforderung. Die Go-Sprache bietet eine Fülle von Bibliotheken und Modulen, um diesen Bedarf zu decken. Unter diesen ist SectionReader ein sehr praktisches Modul, mit dem wir den Inhaltsbereich einer großen Datei angeben und Lese-, Verschlüsselungs- und Entschlüsselungsvorgänge durchführen können. In diesem Artikel wird erläutert, wie Sie das SectionReader-Modul von Go zur Implementierung verwenden
