PHP AES 加密解密
Sheeraz Gul
2022年5月13日
PHP 有一個使用 PHP 的 AES
方法加密和解密字串的內建擴充套件。
函式 openssl_encrypt()
用於加密字串,openssl_decrypt()
用於解密字串。
在 PHP 中使用 Open SSL 函式加密和解密字串
openssl_encrypt()
和 openssl_decrypt()
採用一組強制和可選引數,有關引數的資訊如下表所示:
範圍 | 描述 |
---|---|
data |
純文字/字串 |
cipher_algo |
密碼方法,在我們的例子中,AES |
passphrase |
如果密碼短語短於限制,則會用空字元靜默填充,如果長則截斷。 |
options |
標誌的按位分離。OPENSSL_RAW_DATA 和 OPENSSL_ZERO_PADDING 。 |
iv |
初始化向量,非空 |
tag |
身份驗證標籤 CGM 或 CCM |
aad |
額外的身份驗證資料。 |
tag_length |
身份驗證標籤的長度在 4 到 16 之間 |
openssl_encrypt()
採用上述所有引數,並在使用 openssl_decrypt()
時排除 aad
和 tag_length
。
<?php
//Encryption
$original_string = "Hello! This is delftstack"; // Plain text/String
$cipher_algo = "AES-128-CTR"; //The cipher method, in our case, AES
$iv_length = openssl_cipher_iv_length($cipher_algo); //The length of the initialization vector
$option = 0; //Bitwise disjunction of flags
$encrypt_iv = '8746376827619797'; //Initialization vector, non-null
$encrypt_key = "Delftstack!"; // The encryption key
// Use openssl_encrypt() encrypt the given string
$encrypted_string = openssl_encrypt($original_string, $cipher_algo,
$encrypt_key, $option, $encrypt_iv);
//Decryption
$decrypt_iv = '8746376827619797'; //Initialization vector, non-null
$decrypt_key = "Delftstack!"; // The encryption key
// Use openssl_decrypt() to decrypt the string
$decrypted_string=openssl_decrypt ($encrypted_string, $cipher_algo,
$decrypt_key, $option, $decrypt_iv);
//Display Strings
echo "The Original String is: <br>" . $original_string. "<br><br>" ;
echo "The Encrypted String is: <br>" . $encrypted_string . "<br><br>";
echo "The Decrypted String is: <br>" . $decrypted_string;
?>
上面的程式碼首先使用 AES
方法對字串進行加密,然後對其進行解密。
輸出:
The Original String is:
Hello! This is delftstack
The Encrypted String is:
21tZwb2Wrw2gPGid29Bfy7TacU1bEmCbaw==
The Decrypted String is:
Hello! This is delftstack
AES 根據方法和位數具有不同的 cipher_algorithams
,例如 aes-128-cbc
、aes-192-cfb
或 aes-256-cbc
。
檢視 AES 加密和其他方法的所有選項此處。
Author: Sheeraz Gul
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook