Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Informationsverschlüsselung und -entschlüsselung in PHP

So implementieren Sie die Informationsverschlüsselung und -entschlüsselung in PHP

WBOY
WBOYOriginal
2023-06-18 10:10:392805Durchsuche

Mit der rasanten Entwicklung der Informationstechnologie sind Informationsverschlüsselung und -entschlüsselung heutzutage nach und nach zu einem der wichtigsten Mittel zum Schutz digitaler Informationen geworden. Als weit verbreitete Programmiersprache im Bereich der Webentwicklung hat auch die Methode von PHP zum Ver- und Entschlüsseln von Informationen große Bedeutung erlangt.

In diesem Artikel werde ich verschiedene Methoden zur Implementierung der Informationsverschlüsselung und -entschlüsselung in PHP vorstellen.

1. PHP-eigene Verschlüsselungsfunktionen verwenden

In PHP können wir eine Reihe integrierter Verschlüsselungsfunktionen zum Ver- und Entschlüsseln von Daten verwenden. Zu diesen Funktionen gehören md5(), sha1(), base64_encode(), base64_decode() usw.

Zuerst wählen wir die Funktionen base64_encode() und base64_decode() zur Demonstration aus. Sie können Daten in eine Reihe von Zeichenfolgen umwandeln, die aus den Zeichen A-Z, a-z, 0-9, + und / bestehen, und die Originaldaten nach der Entschlüsselung wiederherstellen.

Der spezifische Implementierungscode lautet wie folgt:

//加密函数
function encrypt($data){
    $data = base64_encode($data);
    return $data;
}

//解密函数
function decrypt($data){
    $data = base64_decode($data);
    return $data;
}

Durch diese beiden Funktionen können wir eine einfache Verschlüsselung und Entschlüsselung von Daten erreichen. Allerdings ist zu beachten, dass diese Methode nicht sehr sicher ist, da sie leicht brutal erzwungen werden kann.

2. Verwenden Sie einen symmetrischen Verschlüsselungsalgorithmus. Der symmetrische Verschlüsselungsalgorithmus ist ein Algorithmus, der denselben Schlüssel zum Verschlüsseln und Entschlüsseln von Daten verwendet. Zu den gängigen symmetrischen Verschlüsselungsalgorithmen gehören DES, AES usw.

In PHP können wir die mcrypt-Bibliothek oder die OpenSSL-Erweiterung verwenden, um symmetrische Verschlüsselungsalgorithmen zu implementieren.

Wir nehmen den AES-Algorithmus als Beispiel, um zu zeigen, wie der symmetrische Verschlüsselungsalgorithmus implementiert wird. Der spezifische Implementierungscode lautet wie folgt:

$key = '1234567890123456'; //密钥
$plaintext = 'Hello, world!'; //原始明文数据

//加密
$ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, '1234567890123456');
$ciphertext = base64_encode($ciphertext);

//解密
$ciphertext = base64_decode($ciphertext);
$plaintext = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, '1234567890123456');

Darunter ist $key der Schlüssel und $plaintext sind die ursprünglichen Klartextdaten. Für die Verschlüsselung wird die Funktion „openssl_encrypt()“ und für die Entschlüsselung die Funktion „openssl_decrypt()“ verwendet.

Es ist wichtig zu beachten, dass die Wahl des Verschlüsselungsalgorithmus auf der tatsächlichen Situation basieren sollte. Wenn Sie eine sicherere Verschlüsselungsmethode in Betracht ziehen, können Sie den AES-256-Algorithmus wählen, die Verschlüsselungsgeschwindigkeit ist jedoch relativ langsamer.

3. Verwenden Sie einen asymmetrischen Verschlüsselungsalgorithmus. Der asymmetrische Verschlüsselungsalgorithmus ist ein Algorithmus, der ein Schlüsselpaar (öffentlicher Schlüssel und privater Schlüssel) zum Verschlüsseln und Entschlüsseln von Daten verwendet.

In PHP können wir die OpenSSL-Erweiterung verwenden, um einen asymmetrischen Verschlüsselungsalgorithmus zu implementieren.

Wir nehmen den RSA-Algorithmus als Beispiel, um die Implementierungsmethode des asymmetrischen Verschlüsselungsalgorithmus zu zeigen. Der spezifische Implementierungscode lautet wie folgt:

$private_key = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC7C1DJoA4vf6Z+/gwTt3eOjQqi7odXbVf/eKeTX2YVi2wS+Z02
Jbcm8+pkuGZDNxXgO89qr13ytGWUhcSy2t/hRMmLjAdEIiCU8a9VcdDsk1Bgz4Ir
qKLj84XdT3pc5N9yMSsEItvqn31ro7/5nDdzRJAsWH6xd220EaJLZL7/hwIDAQAB
AoGBAIJc3cZhytX5jni/jdDa7+keAwDTbLsPAx1pyJvZbIZ26v8f8cxVgCD1yJ0+
Fm6fi/BTcCfi5UOD6ClIdYxQ9ZsHkhDkU+z8r114kguNziHkrm2kR/ijXmYdNDaU
Y9jNtRjvMHOQWfj+ym9p2jKJd/wYG1TodY5AVMJeSLvjo/7RAkEA/6je8XnhVADo
xMGs/eJ80AYEVo11+6PjxVVqivJ0O0l8DNd+4ih+U2ohjvQEjBpfcUGWx+cpxhR8
iE5TgrPXswJBANg/xhNhMNqL4DsXdc0y37n68QAVR/+SNYkipUZqHSIqe6LH4db/
H09kWeZJQ4ArtiIwgl5Q5dgngnAubdVreRUCQDXN287lEns+hIn7GUYWCO5V4fND
WbM8K02UaO+qutglLrbzIlLa6+IjYb+7p8adR/K66QiLJe6UdMze3/Nlzi0CQQCV
Xa5m6m1Q7lfALG53u0dvpVx3JmIEPZvfYh8onMyODFfF4PPFNZwgIjlbSRVTFxJ1
hW2PWF1EBbJ2vEI7tWnBAkEAt0LnrmfkApmwhPiEKzjvezUnTeqWcZaImp7uZ8V7
av2Q43WTXNQeKAzI4ItZHvEKtN0Xrnvah7NiW7K7ZQA25w==
-----END RSA PRIVATE KEY-----
EOD;

$public_key = <<<EOD
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7C1DJoA4vf6Z+/gwTt3eOjQqi
7odXbVf/eKeTX2YVi2wS+Z02Jbcm8+pkuGZDNxXgO89qr13ytGWUhcSy2t/hRMmL
jAdEIiCU8a9VcdDsk1Bgz4IrqKLj84XdT3pc5N9yMSsEItvqn31ro7/5nDdzRJAs
WH6xd220EaJLZL7/hwIDAQAB
-----END PUBLIC KEY-----
EOD;

$plaintext = 'Hello, world!';

//私钥加密
openssl_private_encrypt($plaintext, $ciphertext, $private_key);
$ciphertext = base64_encode($ciphertext);

//公钥解密
$ciphertext = base64_decode($ciphertext);
openssl_public_decrypt($ciphertext, $plaintext, $public_key);

Darunter ist $private_key der private Schlüssel, $public_key der öffentliche Schlüssel und $plaintext die ursprünglichen Klartextdaten. Für die Verschlüsselung wird die Funktion „openssl_private_encrypt()“ und für die Entschlüsselung die Funktion „openssl_public_decrypt()“ verwendet.

Es ist zu beachten, dass die Verschlüsselungsgeschwindigkeit des RSA-Algorithmus langsam ist und sich daher nicht für die Verschlüsselung großer Datenmengen eignet. In praktischen Anwendungen können wir eine Kombination aus symmetrischen Verschlüsselungsalgorithmen und asymmetrischen Verschlüsselungsalgorithmen verwenden. Verwenden Sie zunächst den symmetrischen Verschlüsselungsalgorithmus, um die Daten zu verschlüsseln, und verwenden Sie dann den asymmetrischen Verschlüsselungsalgorithmus, um den vom symmetrischen Verschlüsselungsalgorithmus verwendeten Schlüssel zu verschlüsseln.

Zusammenfassend sind die oben genannten Methoden zum Verschlüsseln und Entschlüsseln von Informationen in PHP aufgeführt. In praktischen Anwendungen sollten wir basierend auf den tatsächlichen Anforderungen und der Sicherheit darüber nachdenken, welche Verschlüsselungsmethode wir wählen sollen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Informationsverschlüsselung und -entschlüsselung 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