Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung eines symmetrischen Verschlüsselungsalgorithmus in PHP

Implementierung eines symmetrischen Verschlüsselungsalgorithmus in PHP

墨辰丷
墨辰丷Original
2018-05-26 16:42:381985Durchsuche

Vor Kurzem wollte ich plötzlich einige vertrauliche Dinge in der Datenbank speichern und habe dann darüber nachgedacht, wie ich verhindern kann, dass andere die gespeicherten Daten auch dann verstehen, wenn sie in die Datenbank gelangen. Die einzige Möglichkeit besteht also darin, sie zu verschlüsseln, aber wir tun es immer noch Wir müssen es selbst lesen. Dann können wir nur einige symmetrische Verschlüsselungsalgorithmen finden und es dann entschlüsseln, wenn wir es sehen möchten. Im Folgenden wird die Implementierung eines einfachen symmetrischen Verschlüsselungsalgorithmus in PHP vorgestellt.

Vorwort

Ich habe im Internet einen guten symmetrischen Verschlüsselungsalgorithmus für PHP gefunden. In der PHP-Syntaxumgebung gibt es URL-Code und URL-Decode. base64_encode und base64_decode verfügen über eigene symmetrische Algorithmen. Diese integrierten Algorithmen können jedoch nicht als Verschlüsselungsalgorithmen bezeichnet werden, sondern nur als Codierungsmethoden. Aber wir können diese verwenden, um einige Verarbeitungen durchzuführen, um einfache Verschlüsselungs- und Entschlüsselungsalgorithmen zu implementieren.

Diesmal werden die Ver- und Entschlüsselungsalgorithmen mithilfe von base64 angepasst. Normalerweise verwenden wir die von base64_encode($str) generierte Zeichenfolge. base64_decode() kann jedoch wieder in unsere vorherige Zeichenfolge umgewandelt werden , und selbst wenn es umgedreht wird, ist es nicht unsere eigene Saite. base64_encode()

Der Beispielcode lautet wie folgt:

 <?php
 $content = "大家好,我是中国人,你是谁";

 /**
 * 简单对称加密算法之加密
 * @param String $string 需要加密的字串
 * @param String $skey 加密EKY
 * @return String
 */
 function encode($string = &#39;&#39;, $skey = &#39;wenzi&#39;) {
 $strArr = str_split(base64_encode($string));
 $strCount = count($strArr);
 foreach (str_split($skey) as $key => $value)
  $key < $strCount && $strArr[$key].=$value;
 return str_replace(array(&#39;=&#39;, &#39;+&#39;, &#39;/&#39;), array(&#39;O0O0O&#39;, &#39;o000o&#39;, &#39;oo00o&#39;), join(&#39;&#39;, $strArr));
 }

 /**
 * 简单对称加密算法之解密
 * @param String $string 需要解密的字串
 * @param String $skey 解密KEY
 * @return String
 */
 function decode($string = &#39;&#39;, $skey = &#39;wenzi&#39;) {
 $strArr = str_split(str_replace(array(&#39;O0O0O&#39;, &#39;o000o&#39;, &#39;oo00o&#39;), array(&#39;=&#39;, &#39;+&#39;, &#39;/&#39;), $string), 2);
 $strCount = count($strArr);
 foreach (str_split($skey) as $key => $value)
  $key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
 return base64_decode(join(&#39;&#39;, $strArr));
 }

 echo &#39;<pre class="brush:php;toolbar:false">&#39;;
 echo "string : " . $content . " <br />";
 echo "encode : " . ($enstring = encode($content)) . &#39;<br />&#39;;
 echo "decode : " . decode($enstring);

 exit();

Im obigen Algorithmus können wir siehe: Wir fügen den von uns im Voraus festgelegten Schlüssel in die von

generierten Zeichen ein und ersetzen dann die darin enthaltenen Sonderzeichen. Selbst wenn andere eine solche Zeichenfolge sehen, wissen sie nicht, was es ist. Natürlich können wir hier geringfügige Verbesserungen vornehmen, z. B. den Schlüssel rückwärts in die Zeichenfolge einfügen, den Schlüssel mit Base64 versehen und ihn dann einfügen usw., den Schlüssel einfügen und ihn dann erneut mit Base64 versehen. base64_encode()

Natürlich ist die Entschlüsselung die entgegengesetzte Richtung der Verschlüsselung. Nachdem ich eine Weile nachgedacht hatte, wurde mir das Prinzip der Entschlüsselung klar: Bevor wir einige Zeichen in die Zeichenfolge eingefügt haben, müssen wir sie jetzt beim Entschlüsseln entfernen Gruppieren Sie zunächst die verschlüsselten Zeichenfolgen in jedem Array und bestimmen Sie dann, ob das zweite Zeichen im Schlüssel enthalten ist. Wenn ja, dann ist das erste Zeichen das Zeichen im ursprünglichen Base64.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.


Verwandte Empfehlungen:

PHP verwendet einen rekursiven Algorithmus Unendliche Durchquerung von Arrays

Häufig verwendete Sortierung in PHPAlgorithmusDetaillierte Erklärung von Beispielen

Häufig verwendete PHP-SortierungAlgorithmenDetaillierte Erklärung von Beispielen für Datenstrukturen

Das obige ist der detaillierte Inhalt vonImplementierung eines symmetrischen Verschlüsselungsalgorithmus in PHP. 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