PHP 如何加密或解密字符串
在PHP编程语言中,使用OpenSSL函数来实现字符串数据的加密和解密。我们可以通过openssl_encrypt(data)和openssl_decrypt(data)来对值进行加密和解密。我们可以使用PHP语言的单个方法或两种方法。
1. openssl_encrypt(data) 方法
加密函数用于对输入值进行编码,具有许多功能。我们可以以复杂和安全的编码格式获取输出值。
语法:
使用以下语法来使用PHP语言加密字符串数据。
string openssl_encrypt( string data_input, stringmethod_input,
string key_input,options = 0,
string iv_input, stringtag = NULL,
string adv_input, inttag_length = 12 )
参数
现在,我们可以讨论语法参数,以便更好地理解。
- $data_input: 它包含了需要在程序中加密的输入字符串或给定数据。
- $method_input: 密码方法包含在使用“openssl_get_cipher_methods()”函数的encrypt函数内部。
- $key_input: 它包含了加密功能所需的加密密钥。
- $options: 它包含了标志的位或运算。标志值表示“OPENSSL_RAW_DATA”和“OPENSSL_ZERO_PADDING”数据。
- $iv_input: 它包含了初始化向量数据。此数据不应为NULL。
- $tag: 它包含了身份验证标签。在使用AEAD密码模式时,它用于传递引用。密码模式例如GCM或CCM。
- $adv_input: 它包含了加密函数的附加身份验证输入值。
- $tag_length: 它包括身份验证输入标签的长度。对于GCM模式,身份验证标签的长度范围是4到16。
返回值
- 成功时,输出值将返回加密的字符串值。
- 失败时,会显示FALSE输出值。
2. openssl_decrypt(data)方法
解密函数用于解码具有许多功能的输入值。我们可以从编码格式中得到原始格式的输出值。
语法
以下语法用于使用php语言解密字符串数据。
string openssl_decrypt( string data_input, stringmethod_input,
string key_input,options = 0,
string iv_input, stringtag = NULL, string $adv_input)
参数
现在,我们可以讨论语法参数以更好地理解。
- $data_input: 它包含在程序中需要解密的输入字符串或给定数据。
- $method_input: 加密方法包含在解密函数中,使用”openssl_get_cipher_methods()”函数。
- $key_input: 它包含用于功能的解密密钥。
- $options: 它包含标志的位或运算结果。标志值表示”OPENSSL_RAW_DATA”和”OPENSSL_ZERO_PADDING”数据。
- $iv_input: 它包含初始化向量数据。该数据不应为NULL。
- $tag: 它包含认证标签。在使用AEAD密码模式时,用于传递引用。密码模式如GCM或CCM。
- $adv_input: 它包含解密函数的额外认证输入值。
返回值:
- 成功时,输出值返回解密后的字符串值。
- 失败时,返回值为FALSE。
示例:
以下示例演示了使用php语言加密和解密字符串数据。
示例1:
以下示例演示了使用php语言加密字符串数据。
我们需要输入字符串、密码方法和加密密钥值来加密字符串值。
<?php
// Original string value works to encrypt the value
original_string = "Welcome to JavaTpoint learners \n";
// Print the original input string
echo "Original String: " .original_string. "<br>";
// Store the cipher method for encrypting
ciphering_value = "AES-128-CTR";
// Store the encryption keyencryption_key = "JavaTpoint";
// Use openssl_encrypt() function for encrypting the data
encryption_value = openssl_encrypt(original_string, ciphering_value,encryption_key);
// Display the encrypted string
echo "<br> <br> Encrypted Input String: " . $encryption_value . "\n";
?>
输出
以下输出显示使用php语言对一串数据进行加密。
示例2
以下示例展示了使用PHP语言对字符串数据进行基本解密。我们需要输入字符串、加密方法和加密密钥值来加密字符串值。加密后的值作为解密数据的输入。
<?php
// Original string value works to encrypt the value
original_string = "Welcome to JavaTpoint learners \n";
// Print the original input string
echo "Original String: " .original_string;
// Store the cipher method
ciphering_value = "AES-128-CTR";
// Store the encryption keyencryption_key = "JavaTpoint";
// Use openssl_encrypt() function
encryption_value = openssl_encrypt(original_string, ciphering_value,encryption_key);
// Display the encrypted input string data
echo "<br> <br> Encrypted Input String: " . encryption_value . "\n";decryption_key = "JavaTpoint";
// Use openssl_decrypt() function to decrypt the data
decryption_value = openssl_decrypt(encryption_value, ciphering_value,decryption_key);
// Display the decrypted string as an original data
echo "<br> <br> Decrypted Input String: " .$decryption_value. "\n";
?>
输出
以下输出显示使用php语言加密数据字符串。
Original String: Welcome to JavaTpoint learners
Encrypted Input String: 47Qv+Tl92fM9MQyevgN3tyMA92KyNamCfx1ptqJ6R8Y=
Decrypted Input String: Welcome to JavaTpoint learners
示例3
下面的示例展示了使用php语言对字符串数据进行基本解密。我们可以在加密和解密函数中使用多个字符串函数。
<?php
original_string = "Welcome to JavaTpoint advance learner \n";
// Print the original input string
echo "Original String: " .original_string;
// Store the cipher method
ciphering_value = "AES-128-CTR";iv_length = openssl_cipher_iv_length(ciphering_value);options = 0;
encryption_iv_value = '11121';
// Store the encryption keyencryption_key = "JavaTpoint";
// Use openssl_encrypt() function
encryption_value = openssl_encrypt(original_string, ciphering_value,encryption_key, options,encryption_iv_value);
// Display the encrypted input string data
echo "<br><br> Encrypted Input String: " . encryption_value . "\n";decryption_key = "JavaTpoint";
// Use openssl_decrypt() function to decrypt the data
decryption_value = openssl_decrypt(encryption_value, ciphering_value,decryption_key, options,encryption_iv_value);
// Display the decrypted string as an original data
echo "<br><br> Decrypted Input String: " .$decryption_value. "\n";
?>
输出
以下输出显示使用PHP语言对一串数据进行加密。
示例4
以下示例显示了使用php语言对字符串数据进行基本解密。我们可以在加密和解密函数中使用多个动态字符串函数。
<?php
original_string = "Welcome to JavaTpoint With Dynamic Functions \n";
// Print the original input string
echo "Original String: " .original_string;
// Store the cipher method
ciphering_value = "BF-CBC";iv_length = openssl_cipher_iv_length(ciphering_value);options = 0;
encryption_iv_value = random_bytes(iv_length);
// Store the encryption key
encryption_key = openssl_digest(php_uname(), 'MD5', TRUE);
// Use openssl_encrypt() functionencryption_value = openssl_encrypt(original_string,ciphering_value, encryption_key,options,encryption_iv_value);
// Display the encrypted input string data
echo "<br><br> Encrypted Input String: " .encryption_value . "\n";
decryption_key = openssl_digest(php_uname(), 'MD5', TRUE);
// Use openssl_decrypt() function to decrypt the datadecryption_value = openssl_decrypt(encryption_value,ciphering_value, decryption_key,options,encryption_iv_value);
// Display the decrypted string as an original data
echo "<br><br> Decrypted Input String: " .decryption_value. "\n";
?>
输出
以下输出显示使用php语言对数据字符串进行加密。
结论
加密和解密字符串是开发过程中不可或缺且安全的功能。它可以安全地存储和检索数据,而不会泄漏重要的值。PHP函数可以创建和显示数据,而不会泄漏和破坏原始值。