如何在 PHP 中加密和解密字符串

PHP中,您可以使用各种加密算法和技术来加密和解密字符串。以下是一个简单的示例,演示如何使用PHP的openssl_encrypt和openssl_decrypt函数来进行字符串加密和解密。这个示例使用对称加密算法AES(Advanced Encryption Standard):

加密字符串:

<?php
// 原始字符串
$originalString = "Hello, this is a secret message.";

// 密钥(必须是16、24或32字节)
$key = "my-secret-key-123"; // 替换为自己的密钥

// 加密算法(AES-256-CBC是常用的AES加密算法)
$algorithm = 'aes-256-cbc';

// 生成随机的初始向量
$iv = random_bytes(16);

// 加密
$encryptedString = openssl_encrypt($originalString, $algorithm, $key, 0, $iv);

// 将加密后的字符串和初始向量一起存储或传输,以供解密使用
$encryptedData = base64_encode($encryptedString . '::' . $iv);

echo "加密后的字符串:$encryptedData";
?>

输出效果

 

解密字符串:

<?php
// 原始字符串
$originalString = "Hello, this is a secret message.";

// 密钥(必须是16、24或32字节)
$key = "my-secret-key-123"; // 替换为自己的密钥

// 加密算法(AES-256-CBC是常用的AES加密算法)
$algorithm = 'aes-256-cbc';

// 加密
$iv = random_bytes(16);
$encryptedString = openssl_encrypt($originalString, $algorithm, $key, 0, $iv);

// 将加密后的字符串和初始向量一起存储或传输,以供解密使用
$encryptedData = base64_encode($encryptedString . '::' . $iv);

echo "加密后的字符串:$encryptedData<br>";

// 解密数据
$explodedData = explode('::', base64_decode($encryptedData), 2);

if (count($explodedData) === 2) {
    list($encryptedString, $iv) = $explodedData;
    $decryptedString = openssl_decrypt($encryptedString, $algorithm, $key, 0, $iv);
    echo "解密后的字符串:$decryptedString";
} else {
    echo "解密数据格式不正确或解密失败";
}
?>


输出效果

在上述示例中,我们首先使用openssl_encrypt函数对原始字符串进行加密,并在加密过程中生成一个随机的初始向量(IV)。然后,我们将加密后的字符串和IV一起存储或传输,以供后续解密使用。

在解密时,我们使用openssl_decrypt函数来解密加密字符串,并使用相同的密钥和IV。最终,我们得到原始的解密后的字符串。

请注意,密钥的保密性非常重要,因为它用于加密和解密数据。确保密钥的安全存储,并不要公开或泄露给未授权的人员。此外,此示例仅涵盖了一种对称加密方法,实际应用可能需要更多的安全性措施,例如使用公钥和私钥进行非对称加密。

 

[protected_content_ajax password="your_password_here"]Your protected content goes here.[/protected_content_ajax]

THE END
分享
二维码
海报
如何在 PHP 中加密和解密字符串
在PHP中,您可以使用各种加密算法和技术来加密和解密字符串。以下是一个简单的示例,演示如何使用PHP的openssl_encrypt和openssl_decrypt函数来进行字符串加密和解密。
<<上一篇
下一篇>>