使用 PHP 的最简单的双向加密

新手上路,请多包涵

在常见的 PHP 安装中进行双向加密的最简单方法是什么?

我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。

安全性不像代码的可移植性那么重要,所以我希望能够使事情尽可能简单。目前,我正在使用 RC4 实现,但如果我能找到本机支持的东西,我想我可以节省很多不必要的代码。

原文由 user1206970 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 550
2 个回答

使用 openssl_encrypt() 加密 openssl_encrypt 函数提供了一种安全且简单的方法来加密您的数据。

在下面的脚本中,我们使用 AES128 加密方法,但您可以根据要加密的内容考虑其他类型的加密方法。

 <?php
$message_to_encrypt = "Yoroshikune";
$secret_key = "my-secret-key";
$method = "aes128";
$iv_length = openssl_cipher_iv_length($method);
$iv = openssl_random_pseudo_bytes($iv_length);

$encrypted_message = openssl_encrypt($message_to_encrypt, $method, $secret_key, 0, $iv);

echo $encrypted_message;
?>

以下是使用的变量的解释:

message_to_encrypt :您要加密的数据 secret_key :这是您用于加密的“密码”。一定不要选择太容易的东西,注意不要与其他人分享你的密钥方法:加密方法。这里我们选择了AES128。 iv_length 和 iv :使用字节准备加密 encrypted_message :包括您的加密消息的变量

使用 openssl_decrypt() 解密 现在您加密了数据,您可能需要对其进行解密,以便重新使用您首先包含在变量中的消息。为此,我们将使用函数 openssl_decrypt()。

 <?php
$message_to_encrypt = "Yoroshikune";
$secret_key = "my-secret-key";
$method = "aes128";
$iv_length = openssl_cipher_iv_length($method);
$iv = openssl_random_pseudo_bytes($iv_length);
$encrypted_message = openssl_encrypt($message_to_encrypt, $method, $secret_key, 0, $iv);

$decrypted_message = openssl_decrypt($encrypted_message, $method, $secret_key, 0, $iv);

echo $decrypted_message;
?>

openssl_decrypt() 提出的解密方法接近于 openssl_encrypt()。

唯一的区别是,您需要添加已经加密的消息作为 openssl_decrypt() 的第一个参数,而不是添加 $message_to_encrypt。

注意:需要保存密钥和 iv 才能解密。

原文由 Lonare 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题