Heim Backend-Entwicklung PHP-Tutorial PHP可逆加密解密算法

PHP可逆加密解密算法

Jun 20, 2016 pm 01:03 PM
data encrypt key ord substr

对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。

对于需要还原的信息,则需要采用可逆的加密解密算法。

下面一组PHP函数是实现此加密解密的方法:

加密算法如下:

function encrypt($data, $key)
{
	$key	=	md5($key);
    $x		=	0;
    $len	=	strlen($data);
    $l		=	strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l) 
        {
        	$x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}
Nach dem Login kopieren

解密算法如下:

function decrypt($data, $key)
{
	$key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l) 
        {
        	$x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    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;
}
Nach dem Login kopieren

上述加密解密的过程均需要用到一个加密密钥(即参数$key)。

$data = &#39;PHP加密解密算法&#39;; // 被加密信息 

$key = &#39;123&#39;; // 密钥 

$encrypt = encrypt($data, $key); 

$decrypt = decrypt($encrypt, $key); 

echo $encrypt, "\n", 

$decrypt;
Nach dem Login kopieren

上述将输出类似如下结果:

gniCSOzZG+HnS9zcFea7SefNGhXF
PHP加密解密算法

从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1663
14
PHP-Tutorial
1266
29
C#-Tutorial
1239
24
Was bedeutet das Identitätsattribut in SQL? Was bedeutet das Identitätsattribut in SQL? Feb 19, 2024 am 11:24 AM

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

Wie SpringBoot Redis-Schlüsseländerungsereignisse überwacht Wie SpringBoot Redis-Schlüsseländerungsereignisse überwacht May 26, 2023 pm 01:55 PM

1. Funktionsübersicht Mit der Keyspace-Benachrichtigung können Clients Ereignisse empfangen, die Rediskey-Änderungen auf irgendeine Weise ändern, indem sie Kanäle oder Muster abonnieren. Alle Befehle, die Tastenkombinationen ändern. Alle Schlüssel, die den Befehl LPUSHkeyvalue[Wert…] erhalten haben. Alle abgelaufenen Schlüssel in der Datenbankdatenbank. Ereignisse werden über die Abonnement- und Veröffentlichungsfunktionen (Pub/Sub) von Redis verteilt, sodass alle Clients, die Abonnement- und Veröffentlichungsfunktionen unterstützen, die Keyspace-Benachrichtigungsfunktion ohne Änderungen direkt verwenden können. Da die aktuellen Abonnement- und Veröffentlichungsfunktionen von Redis bei Ihrem Programm eine Fire-and-Forget-Strategie verfolgen

So lösen Sie das Problem der Stapellöschung von Schlüsselwerten in Redis So lösen Sie das Problem der Stapellöschung von Schlüsselwerten in Redis May 31, 2023 am 08:59 AM

Aufgetretene Probleme: Während des Entwicklungsprozesses werden Sie auf Schlüssel stoßen, die nach bestimmten Regeln stapelweise gelöscht werden müssen, z. B. login_logID (ID ist eine Variable). Jetzt müssen Sie Daten wie „login_log*“ löschen, aber redis selbst verfügt nur über Befehlsschlüssel für Klassenschlüsselwerte, es gibt jedoch keinen Befehl zum Stapellöschen einer bestimmten Klasse. Lösung: Zuerst abfragen, dann löschen, xargs verwenden, um Parameter zu übergeben (xargs kann Pipe- oder Standardeingabedaten (stdin) in Befehlszeilenparameter umwandeln), zuerst die Abfrageanweisung ausführen und dann den abgefragten Schlüsselwert und die ursprünglichen del-Parameter entfernen. löschen. redis-cliKEYSkey* (Suchbedingung)|xargsr

Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Sep 04, 2024 pm 06:32 PM

Eine nicht patchbare Schwachstelle im Yubico-Zwei-Faktor-Authentifizierungsschlüssel hat die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte beeinträchtigt. Die Feitian A22 JavaCard und andere Geräte, die TPMs der Infineon SLB96xx-Serie verwenden, sind ebenfalls anfällig.Alle

PHP gibt den ASCII-Wert des ersten Zeichens der Zeichenfolge zurück PHP gibt den ASCII-Wert des ersten Zeichens der Zeichenfolge zurück Mar 21, 2024 am 11:01 AM

In diesem Artikel wird der ASCII-Wert des ersten Zeichens der von PHP zurückgegebenen Zeichenfolge ausführlich erläutert. Der Herausgeber hält dies für sehr praktisch, daher teile ich ihn als Referenz mit. PHP gibt den ASCII-Wert des ersten Zeichens einer Zeichenfolge zurück. Einführung In PHP ist das Abrufen des ASCII-Werts des ersten Zeichens einer Zeichenfolge eine gängige Operation, die grundlegende Kenntnisse der Zeichenfolgenverarbeitung und Zeichenkodierung erfordert. ASCII-Werte werden zur Darstellung des numerischen Werts von Zeichen in Computersystemen verwendet und sind für den Zeichenvergleich, die Datenübertragung und die Speicherung von entscheidender Bedeutung. Der Prozess zum Abrufen des ASCII-Werts des ersten Zeichens einer Zeichenfolge umfasst die folgenden Schritte: Abrufen der Zeichenfolge: Bestimmen Sie die Zeichenfolge, für die Sie den ASCII-Wert abrufen möchten. Es kann eine Variable oder eine String-Konstante sein

PHP gibt den String von der Startposition bis zur Endposition eines Strings in einem anderen String zurück PHP gibt den String von der Startposition bis zur Endposition eines Strings in einem anderen String zurück Mar 21, 2024 am 10:31 AM

In diesem Artikel wird ausführlich erläutert, wie PHP die Zeichenfolge von der Startposition zur Endposition einer Zeichenfolge in einer anderen Zeichenfolge zurückgibt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit diesem Artikel können Sie etwas abgewinnen. Verwenden Sie die Funktion substr() in PHP, um Teilzeichenfolgen aus einer Zeichenfolge zu extrahieren. Die Funktion substr() kann Zeichen innerhalb eines angegebenen Bereichs aus einer Zeichenfolge extrahieren. Die Syntax lautet wie folgt: substr(string,start,length) wobei: string: der ursprüngliche String, aus dem der Teilstring extrahiert werden soll. start: Der Index der Startposition des Teilstrings (beginnend bei 0). Länge (optional): Die Länge des Teilstrings. Wenn nicht angegeben, dann

Wie kann festgestellt werden, ob ein JSONObject in Java einen bestimmten Schlüssel enthält? Wie kann festgestellt werden, ob ein JSONObject in Java einen bestimmten Schlüssel enthält? May 08, 2023 pm 12:25 PM

Bestimmen Sie, ob ein KeyJSONObject in JSONObjectjsonObj=newJSONObject();jsonObj.put("version","1.0.0");//Versionsnummer jsonObj.put("encoding","UTF-8");//Encoding-Methode vorhanden ist Bestimmen Sie, ob das Versionsattribut in jsonObject vorhanden ist. jsonObj.has("version");//Gib true zurück, um zu überprüfen, ob das k in der JSON-Zeichenfolge vorhanden ist

So verwenden Sie den Befehl zum stapelweisen Löschen von Schlüsseln in Redis So verwenden Sie den Befehl zum stapelweisen Löschen von Schlüsseln in Redis May 26, 2023 pm 05:09 PM

Es gibt keinen Befehl zum direkten Löschen von Schlüsseln basierend auf regulären Ausdrücken in Redis, sondern nur den Befehl delkey1key2... Es gibt jedoch einen Befehl zum Abrufen von Schlüsseln über reguläre Ausdrücke in Redis: Schlüssel „regulärer Ausdruck“ können zum Löschen von Schlüsseln in verwendet werden Batches mit Hilfe des xargs-Befehls. Der Schlüsselwert wird als Parameter an delredis-clikeys „mailspec*“|xargsdel kompletter Befehl übergeben: [root@localhostredis7001]#redis-cli-h192.169.1.71-p7001-a123456keysem *|

See all articles