Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verschlüssele und entschlüssele ich Daten in PHP?

Wie verschlüssele und entschlüssele ich Daten in PHP?

WBOY
WBOYOriginal
2023-05-12 08:07:352862Durchsuche

PHP ist eine serverseitige Open-Source-Programmiersprache, die im Bereich der Webentwicklung weit verbreitet ist. Da es bei Webanwendungen häufig um vertrauliche Benutzerinformationen wie Passwörter, Bankkartennummern usw. geht, ist es besonders wichtig, diese Informationen zu ver- und entschlüsseln.

In diesem Artikel wird das Ver- und Entschlüsseln von Daten in PHP vorgestellt, hauptsächlich mit folgendem Inhalt:

  1. Häufig verwendete Verschlüsselungsalgorithmen und ihre Eigenschaften
  2. # 🎜🎜#MD5-Verschlüsselung in PHP verwenden
  3. Sha1-Verschlüsselung in PHP verwenden
  4. Base64-Verschlüsselung in PHP verwenden
  5. OpenSSL in der PHP-Erweiterungsbibliothek verwenden für AES-Verschlüsselung und -Entschlüsselung
  6. Schritte zur Verwendung der mcrypt-Erweiterungsbibliothek für die AES-Verschlüsselung und -Entschlüsselung in PHP
1. Häufig verwendete Verschlüsselungsalgorithmen und ihre Eigenschaften #🎜🎜 #

MD5-Algorithmus: Ein häufig verwendeter Nachrichten-Digest-Algorithmus, der eine Zeichenfolge beliebiger Länge in einen 128-Bit-Ausgabewert umwandelt. Er wird häufig in Bereichen wie Datenverschlüsselung und elektronischen Signaturen verwendet.
  1. Eigenschaften: Der MD5-Algorithmus ist irreversibel, das heißt, der Eingabewert kann nicht durch den Ausgabewert umgekehrt werden; der MD5-Algorithmus stellt sicher, dass der Ausgabewert derselben Eingabe auch gleich ist ; Der MD5-Algorithmus kann durch Kollisionsangriffe leicht geknackt werden.

SHA1-Algorithmus: Ein sicherer Hash-Algorithmus, ähnlich wie MD5, der eine Zeichenfolge beliebiger Länge in einen 160-Bit-Ausgabewert abbildet, mit besserer Sicherheit und Antikollisionsfähigkeit.
  1. Merkmale: Der SHA1-Algorithmus ist irreversibel; die Ausgabewertlänge des SHA1-Algorithmus ist länger als die des MD5-Algorithmus, wodurch eine bessere Sicherheit gewährleistet wird; der SHA1-Algorithmus kann Kollisionsangriffe nicht vollständig verhindern.

base64-Kodierung: Eine Kodierungsmethode, die Binärdaten in gut lesbare ASCII-Zeichen kodiert. Sie wird häufig in E-Mails, HTTP-Protokollen und anderen Bereichen verwendet.
  1. Eigenschaften: Die Base64-Kodierung ist kein echter Verschlüsselungsalgorithmus, sondern nur eine Kodierungsmethode. Die Base64-Kodierung ändert nicht den Inhalt der Daten, sondern nur die Darstellung der Daten kann die Stabilität und Sicherheit der Datenübertragung erhöhen.

AES-Algorithmus: Advanced Encryption Standard ist ein symmetrischer Verschlüsselungsalgorithmus, der zum Schutz der Sicherheit von Daten wie sensiblen Informationen verwendet wird. Der AES-Algorithmus ist in drei Schlüssellängen unterteilt: 128 Bit, 192 Bit und 256 Bit.
  1. Eigenschaften: Der AES-Algorithmus ist eine symmetrische Verschlüsselung, und der AES-Algorithmus bietet eine bessere Sicherheit und Effizienz, je länger die vom AES verwendete Schlüssellänge ist Algorithmus, desto sicherer ist er. Je höher das Geschlecht.

2. MD5-Verschlüsselung in PHP verwenden

Verwenden Sie die Funktion md5() in PHP, um Zeichenfolgen mit MD5 zu verschlüsseln. Der Beispielcode lautet wie folgt:

$str = "hello world";
$encrypted_str = md5($str);
echo $encrypted_str;
# 🎜 🎜#Das Ausgabeergebnis ist:

5eb63bbbe01eeed093cb22bb8f5acdc3

3. Verwenden Sie die sha1-Verschlüsselung in PHP.

Verwenden Sie die sha1()-Funktion in PHP, um Zeichenfolgen mit SHA1 zu verschlüsseln folgt:

$str = "hello world";
$encrypted_str = sha1($str);
echo $encrypted_str;

Das Ausgabeergebnis ist:

2ef7bde608ce5404e97d5f042f95f89f1c232871

4. Verwenden Sie die Base64-Codierung in PHP.

Verwenden Sie die Funktion base64_encode() in PHP zum Codieren Zeichenfolgen Base64-Kodierung, verwenden Sie die Funktion base64_decode(), um die base64-kodierte Zeichenfolge zu dekodieren. Der Beispielcode lautet wie folgt:

$str = "hello world";
$encoded_str = base64_encode($str);
echo $encoded_str . "
";  // 输出:aGVsbG8gd29ybGQ=
$decoded_str = base64_decode($encoded_str);
echo $decoded_str;    // 输出:hello world

5. Verwenden Sie die OpenSSL-Erweiterungsbibliothek in PHP für die AES-Verschlüsselung und -Entschlüsselung#🎜🎜 ## 🎜🎜#Die Verwendung der OpenSSL-Erweiterungsbibliothek in PHP kann eine AES-Verschlüsselung und -Entschlüsselung von Daten durchführen. Der Beispielcode lautet wie folgt:

// AES加密
function encrypt($str, $key) {
    $iv_size = openssl_cipher_iv_length('AES-256-CBC');
    $iv = openssl_random_pseudo_bytes($iv_size);   // 生成随机IV
    $encrypted_str = openssl_encrypt($str, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    $result = base64_encode($iv . $encrypted_str);
    return $result;
}

// AES解密
function decrypt($encrypted_str, $key) {
    $encrypted_str = base64_decode($encrypted_str);
    $iv_size = openssl_cipher_iv_length('AES-256-CBC');
    $iv = substr($encrypted_str, 0, $iv_size);
    $encrypted_str = substr($encrypted_str, $iv_size);
    $result = openssl_decrypt($encrypted_str, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return $result;
}

// 测试代码
$key = "12345678901234567890123456789012";   // AES密钥,32位
$str = "hello world";
$encrypted_str = encrypt($str, $key);
echo $encrypted_str . "
";
$decrypted_str = decrypt($encrypted_str, $key);
echo $decrypted_str . "
";

Das Ausgabeergebnis ist:

7KdkeT91N7zg8WZrZ1Oehg==xsYlbGhMF8dNQXH1LqTwVw==
hello world
#🎜🎜 # 6. Verwendung in PHP-Schritten für die AES-Verschlüsselung und -Entschlüsselung mithilfe der mcrypt-Erweiterungsbibliothek

Die Schritte zur Verwendung der mcrypt-Erweiterungsbibliothek für die AES-Verschlüsselung und -Entschlüsselung sind wie folgt:

Laden der mcrypt-Erweiterungsbibliothek#🎜🎜 #

extension_loaded('mcrypt');  // 检查是否已经加载mcrypt扩展库

Zufällige IV generieren

    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  1. Verwenden Sie mcrypt_encrypt() Funktion für AES-Verschlüsselung
    $encrypted_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC, $iv);
  1. Funktion mcrypt_decrypt() für AES-Entschlüsselung verwenden
    $decrypted_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted_str, MCRYPT_MODE_CBC, $iv);
  1. base64_encode() verwenden Funktion zum Base64-Codieren der verschlüsselten Daten
# 🎜🎜#
$encrypted_str = base64_encode($iv . $encrypted_str);
  1. Verwenden Sie die Funktion substr(), um den IV- und Chiffretext-Teil der verschlüsselten Daten abzufangen
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = substr($encrypted_str, 0, $iv_size);
$encrypted_str = substr($encrypted_str, $iv_size);
    Der vollständige Beispielcode für die AES-Verschlüsselung und -Entschlüsselung lautet wie folgt:
  1. // AES加密
    function encrypt($str, $key) {
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);    // 生成随机IV
        $encrypted_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC, $iv);
        $result = base64_encode($iv . $encrypted_str);    // 对IV和密文进行base64编码
        return $result;
    }
    
    // AES解密
    function decrypt($encrypted_str, $key) {
        $encrypted_str = base64_decode($encrypted_str);  // 对base64编码的字符串进行解码
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
        $iv = substr($encrypted_str, 0, $iv_size);       // 截取IV值
        $encrypted_str = substr($encrypted_str, $iv_size);    // 截取密文部分
        $result = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted_str, MCRYPT_MODE_CBC, $iv);
        return $result;
    }
    
    // 测试代码
    $key = "1234567890123456";       // AES密钥,16位
    $str = "hello world";
    $encrypted_str = encrypt($str, $key);
    echo $encrypted_str . "
    ";
    $decrypted_str = decrypt($encrypted_str, $key);
    echo $decrypted_str . "
    ";
  2. Das Ausgabeergebnis ist:
Ym63V4DnBc/jk9bNNzlngQtdeecbBZ+E7IHvC6khMgg=
hello world
    Zusammenfassung:
  1. The Oben ist die Methode zur Datenverschlüsselung und -entschlüsselung in PHP aufgeführt. Mit unterschiedlichen Eigenschaften und anwendbaren Szenarien sollten Entwickler geeignete Verschlüsselungsmethoden basierend auf den tatsächlichen Anforderungen und Sicherheitsanforderungen auswählen. Bei der Verwendung von Verschlüsselungsmethoden müssen Sie auch auf den Sicherheitsschutz von Schlüsseln und Verschlüsselungsprozessen achten, um Angriffen durch Hacker vorzubeugen.

Das obige ist der detaillierte Inhalt vonWie verschlüssele und entschlüssele ich Daten 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