Heim >Backend-Entwicklung >PHP-Tutorial >Wie führt man symmetrische und asymmetrische Verschlüsselung in PHP durch?

Wie führt man symmetrische und asymmetrische Verschlüsselung in PHP durch?

WBOY
WBOYOriginal
2023-05-21 15:10:402480Durchsuche

Im Bereich der Netzwerksicherheit ist die Verschlüsselungstechnologie ein sehr wichtiges technisches Mittel, mit dem Daten ver- und entschlüsselt werden können, um die Datensicherheit zu gewährleisten. Als beliebte serverseitige Programmiersprache bietet PHP auch Unterstützung für symmetrische und asymmetrische Verschlüsselung, um den Anforderungen verschiedener Anwendungsszenarien gerecht zu werden.

  1. Symmetrische Verschlüsselung

Symmetrische Verschlüsselung bezieht sich auf eine Verschlüsselungsmethode, die denselben Schlüssel für die Ver- und Entschlüsselung verwendet. Es gibt viele symmetrische Verschlüsselungsalgorithmen wie DES, 3DES, AES usw. In PHP kann die symmetrische Verschlüsselung mithilfe der von der mcrypt-Erweiterungsbibliothek bereitgestellten Funktionen implementiert werden.

Der Beispielcode lautet wie folgt:

$key = '123456789'; // 密钥
$data = 'Hello World'; // 待加密字符串
$iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND);
$cipher = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC, $iv);
echo base64_encode($cipher); // 输出加密后的字符串

Im obigen Code wird die DES-Verschlüsselung über die Funktion mcrypt_encrypt durchgeführt und der Modus MCRYPT_MODE_CBC wird zum Auffüllen verwendet. $key ist der Schlüssel für die symmetrische Verschlüsselung, $data ist die zu verschlüsselnde Klartextzeichenfolge und $iv ist der zufällige Initialisierungsvektor.

Der Beispielcode für die Entschlüsselung lautet wie folgt:

$cipher = base64_decode('JnFXVC9e+rzR8oUgM67Q0w=='); // 加密后的字符串
$key = '123456789'; // 密钥
$iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND);
$plain = mcrypt_decrypt(MCRYPT_DES, $key, $cipher, MCRYPT_MODE_CBC, $iv);
echo $plain; // 输出解密后的字符串
  1. Asymmetrische Verschlüsselung

Asymmetrische Verschlüsselungsalgorithmen erfordern ein Schlüsselpaar für die Verschlüsselung und Entschlüsselung, wobei der öffentliche Schlüssel öffentlich gemacht werden kann, während der private Schlüssel geheim gehalten werden muss. Zu den häufig verwendeten asymmetrischen Verschlüsselungsalgorithmen gehören RSA, DSA usw. In PHP kann die asymmetrische Verschlüsselung mithilfe der von der OpenSSL-Erweiterungsbibliothek bereitgestellten Funktionen implementiert werden.

Der Beispielcode lautet wie folgt:

$data = 'Hello World'; // 待加密字符串
$res = openssl_pkey_new(); // 生成密钥对
openssl_pkey_export($res, $privateKey); // 获取私钥
$publicKey = openssl_pkey_get_details($res)["key"]; // 获取公钥
openssl_public_encrypt($data, $cipher, $publicKey); // 加密数据
echo base64_encode($cipher); // 输出加密后的字符串

Im obigen Code wird zunächst die Funktion openssl_pkey_new verwendet, um ein Paar aus öffentlichen und privaten Schlüsseln zu generieren, und dann wird die Funktion openssl_public_encrypt zum Verschlüsseln der Daten verwendet. Der zu diesem Zeitpunkt erhaltene $publicKey kann öffentlich gemacht werden, während der $privateKey geheim gehalten werden muss.

Der Beispielcode für die Entschlüsselung lautet wie folgt:

$cipher = base64_decode('RvnOeNe+p8LtlpuUcq0wqFoX2yUaGXvY6FHlWpT0NQwzVQwVcDSnkw4C6YJMvnsMH4N5JDP18RI8x7CFqUCdJg=='); // 加密后的字符串
$privateKey = '-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----'; // 私钥
openssl_private_decrypt($cipher, $plain, $privateKey); // 解密数据
echo $plain; // 输出解密后的字符串

Im obigen Code verwenden Sie zunächst die Funktion openssl_pkey_export, um die Zeichenfolgenform des privaten Schlüssels abzurufen, und verwenden Sie dann die Funktion openssl_private_decrypt, um die verschlüsselten Daten zu entschlüsseln und den ursprünglichen Klartext zu erhalten.

Zusammenfassung:

Durch die obige Einführung haben wir erfahren, dass Sie in PHP die Erweiterungsbibliotheken mcrypt und openssl verwenden können, um symmetrische und asymmetrische Verschlüsselung zu implementieren. Für unterschiedliche Verschlüsselungsanforderungen in Anwendungsszenarien können wir flexibel verschiedene Verschlüsselungsalgorithmen und Verschlüsselungsmethoden verwenden. Natürlich müssen wir beim eigentlichen Verschlüsselungsprozess auch auf den Schutz und die Verwaltung von Schlüsseln achten, um die Datensicherheit zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWie führt man symmetrische und asymmetrische Verschlüsselung in PHP durch?. 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