Heim > Backend-Entwicklung > PHP-Tutorial > Verschlüsselungs- und Entschlüsselungstechnologie in PHP

Verschlüsselungs- und Entschlüsselungstechnologie in PHP

王林
Freigeben: 2023-05-11 08:08:01
Original
2436 Leute haben es durchsucht

PHP ist eine weit verbreitete Webentwicklungssprache und ihre Ver- und Entschlüsselungstechnologie ist für die Datensicherheit von großer Bedeutung. In diesem Artikel wird die Verschlüsselungs- und Entschlüsselungstechnologie in PHP vorgestellt und ihre praktische Anwendung in Webanwendungen untersucht.

1. Verschlüsselungstechnologie

Verschlüsselungstechnologie ist ein Prozess zur Umwandlung von gewöhnlichem Text in verschlüsselten Text. In PHP wird Verschlüsselungstechnologie hauptsächlich verwendet, um die Sicherheit übertragener Daten wie Benutzeranmeldeinformationen, Transaktionsdaten usw. zu gewährleisten. Gängige Verschlüsselungstechnologien in PHP sind wie folgt:

  1. Hash-Verschlüsselung

Bei der Hash-Verschlüsselung wird eine Eingabe beliebiger Länge (auch Nachricht genannt) durch einen bestimmten Algorithmus in eine Ausgabe fester Länge umgewandelt Bedingungen:

a. Für die gleiche Eingabe muss der Algorithmus sicherstellen, dass die Ausgabe gleich ist;
b.

Zu den häufig verwendeten Hash-Verschlüsselungsfunktionen in PHP gehören md5(), sha1() usw. Die Funktion md5() wandelt eine Eingabezeichenfolge beliebiger Länge in eine 128-Bit-Ausgabe um und gibt sie als 32-Bit-Hexadezimalzeichenfolge zurück.

Der folgende Code kann beispielsweise die Zeichenfolge „Hello World“ in eine verschlüsselte Zeichenfolge umwandeln:

<?php
$orig_str = "Hello World";
$encrypted_str = md5($orig_str);
echo "加密前的字符串:$orig_str <br>";
echo "加密后的字符串:$encrypted_str";
?>
Nach dem Login kopieren
  1. Symmetrische Verschlüsselung

Symmetrische Verschlüsselung ist eine Verschlüsselungstechnologie, die denselben Schlüssel zum Ver- und Entschlüsseln von Daten verwendet. Verwenden Sie in PHP die Funktion mcrypt(), um symmetrische Verschlüsselungsvorgänge durchzuführen. mcrypt() verwendet sehr gängige Verschlüsselungsalgorithmen wie DES, TripleDES, Blowfish, AES usw.

Der folgende Code zeigt, wie die mcrypt()-Funktion für die symmetrische Verschlüsselung verwendet wird:

<?php
$key = '0123456789abcdef'; // 密钥
$input = 'Hello World'; // 加密前的字符串
$td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); // 初始化加密模型
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); // 初始化随机向量
mcrypt_generic_init($td, $key, $iv); // 初始化加密
$encrypted = mcrypt_generic($td, $input); // 进行加密操作
mcrypt_generic_deinit($td); // 结束加密
mcrypt_module_close($td); // 关闭加密模型
echo "加密前的字符串: $input <br>";
echo "加密后的字符串: ".base64_encode($encrypted)."<br>"; // 输出加密结果
?>
Nach dem Login kopieren
  1. Asymmetrische Verschlüsselung

Asymmetrische Verschlüsselung ist ein Algorithmus, der unterschiedliche Schlüssel zur Ver- und Entschlüsselung verwendet. Der in PHP häufig verwendete asymmetrische Verschlüsselungsalgorithmus ist RSA. Bei der Verwendung des RSA-Algorithmus zur Ver- und Entschlüsselung sind zwei Schlüssel erforderlich, der öffentliche Schlüssel und der private Schlüssel. Im Allgemeinen ist der öffentliche Schlüssel öffentlich, während der private Schlüssel nur dem Inhaber bekannt ist.

Der folgende Code demonstriert die Verwendung des RSA-Algorithmus zur Ver- und Entschlüsselung in PHP:

<?php
$data = 'Hello World';
// 生成RSA公钥,并将公钥保存到public.key文件中
$res = openssl_pkey_new();
openssl_pkey_export($res, $privkey); // 生成私钥并保存
$pubkey = openssl_pkey_get_details($res);
$pubkey = $pubkey["key"];
file_put_contents("public.key", $pubkey);
// 使用RSA公钥加密数据
openssl_public_encrypt($data, $encrypted, $pubkey);
echo "加密前的数据:$data <br>";
echo "加密后的数据:$encrypted <br>";
// 使用RSA私钥解密数据
openssl_pkey_get_private($privkey);
openssl_private_decrypt($encrypted, $decrypted, $privkey);
echo "解密后的数据:$decrypted <br>";
?>
Nach dem Login kopieren

2. Entschlüsselungstechnologie

Entschlüsselungstechnologie ist der Prozess der Wiederherstellung verschlüsselter Daten. In PHP wird die Entschlüsselungstechnologie hauptsächlich verwendet, um die Sicherheit übertragener Daten wie Benutzeranmeldeinformationen, Transaktionsdaten usw. zu gewährleisten. Gängige Entschlüsselungstechnologien in PHP sind wie folgt:

  1. Hash-Entschlüsselung

Hash-Verschlüsselung ist eine irreversible Verschlüsselungstechnologie und kann nicht entschlüsselt werden.

  1. Symmetrische Entschlüsselung

Symmetrische Entschlüsselung ist eine Verschlüsselungstechnologie, die denselben Schlüssel zum Entschlüsseln von Daten verwendet. Verwenden Sie in PHP die Funktion mcrypt(), um symmetrische Entschlüsselungsvorgänge durchzuführen.

Der folgende Code zeigt, wie die mcrypt()-Funktion für die symmetrische Entschlüsselung verwendet wird:

<?php
$key = '0123456789abcdef'; // 密钥
$input = 'vO8v4zinwuL6qvtSRWdq3g=='; // 加密后的字符串
$td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); // 初始化加密模型
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); // 初始化随机向量
mcrypt_generic_init($td, $key, $iv); // 初始化加密
$decrypted = mdecrypt_generic($td, base64_decode($input)); // 进行解密操作
mcrypt_generic_deinit($td); // 结束加密
mcrypt_module_close($td); // 关闭加密模型
echo "解密前的字符串: $input <br>";
echo "解密后的字符串: $decrypted"; // 输出解密结果
?>
Nach dem Login kopieren
  1. Asymmetrische Entschlüsselung

Asymmetrische Entschlüsselung ist ein Algorithmus, der unterschiedliche Schlüssel zur Ver- und Entschlüsselung verwendet. In PHP ist RSA der häufig verwendete asymmetrische Entschlüsselungsalgorithmus.

Der folgende Code demonstriert die Verwendung des RSA-Algorithmus zur Entschlüsselung in PHP:

<?php
$data = 'Hello World';
// 使用RSA公钥加密数据
$pubkey = file_get_contents("public.key");
openssl_public_encrypt($data, $encrypted, $pubkey);
echo "加密前的数据:$data <br>";
echo "加密后的数据:$encrypted <br>";
// 使用RSA私钥解密数据
$privkey = file_get_contents("private.key");
openssl_private_decrypt($encrypted, $decrypted, $privkey);
echo "解密后的数据:$decrypted <br>";
?>
Nach dem Login kopieren

3. Anwendungsbeispiele

In der tatsächlichen Webentwicklung sind Verschlüsselungs- und Entschlüsselungstechnologie wichtige Mittel zur Gewährleistung der Datensicherheit. Im Folgenden wird anhand eines Anwendungsbeispiels für die Benutzeranmeldung demonstriert, wie die Verschlüsselungs- und Entschlüsselungstechnologie zum Schutz der Benutzeranmeldeinformationen verwendet wird.

  1. Frontend-Formular

Auf der Frontend-Seite müssen Sie ein Formular erstellen, um die Anmeldeinformationen des Benutzers zu erhalten. Das Formular enthält zwei Eingabefelder für Benutzername und Passwort:

<form method="post" action="login.php">
    <label>用户名:</label>
    <input type="text" name="username"><br>
    <label>密码:</label>
    <input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
Nach dem Login kopieren
  1. Backend-Anmeldeüberprüfung

Im PHP-Code müssen der vom Benutzer eingegebene Benutzername und das Passwort überprüft werden. Wenn die Überprüfung bestanden wird, können die verschlüsselten Informationen des Benutzers in der Sitzung zur Verwendung auf nachfolgenden Seiten gespeichert werden.

<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
// 数据库连接等相关代码省略
// 检查用户名和密码是否匹配
if ($username == $db_username && $password == $db_password) {
    // 生成加密后的用户信息
    $userinfo = array(
        'username' => $username,
        'password' => $password
    );
    $encrypted = base64_encode(serialize($userinfo));
    // 将加密后的用户信息保存到Session中
    $_SESSION['userinfo'] = $encrypted;
    // 登录成功,跳转到首页
    header("Location: index.php");
} else {
    // 登录失败,返回错误消息
    echo "用户名或密码错误!";
}
?>
Nach dem Login kopieren
  1. Backend-Homepage

Auf der Backend-Homepage müssen Sie die in der Sitzung gespeicherten verschlüsselten Benutzerinformationen entschlüsseln und den Benutzernamen und andere Informationen anzeigen.

<?php
session_start();
if (isset($_SESSION['userinfo'])) {
    // 从Session中获取加密后的用户信息
    $encrypted = $_SESSION['userinfo'];
    // 解密用户信息
    $userinfo = unserialize(base64_decode($encrypted));
    $username = $userinfo['username'];
    echo "欢迎您,$username!";
} else {
    // 用户未登录,跳转到登录页
    header("Location: login.php");
}
?>
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass die Verschlüsselungs- und Entschlüsselungstechnologie in PHP einen wichtigen Anwendungswert hat. Im Prozess der Webentwicklung ist es von entscheidender Bedeutung, die Sicherheit der Benutzerdaten zu gewährleisten. Entwickler müssen geeignete Verschlüsselungs- und Entschlüsselungstechnologien auswählen, die auf den tatsächlichen Anforderungen basieren, um die Datensicherheit zu stärken.

Das obige ist der detaillierte Inhalt vonVerschlüsselungs- und Entschlüsselungstechnologie in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage