在常见的 PHP 安装中进行双向加密的最简单方法是什么?
我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。
安全性不像代码的可移植性那么重要,所以我希望能够使事情尽可能简单。目前,我正在使用 RC4 实现,但如果我能找到本机支持的东西,我想我可以节省很多不必要的代码。
原文由 user1206970 发布,翻译遵循 CC BY-SA 4.0 许可协议
在常见的 PHP 安装中进行双向加密的最简单方法是什么?
我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。
安全性不像代码的可移植性那么重要,所以我希望能够使事情尽可能简单。目前,我正在使用 RC4 实现,但如果我能找到本机支持的东西,我想我可以节省很多不必要的代码。
原文由 user1206970 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 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 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答776 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
2 回答2.3k 阅读✓ 已解决
编辑:
你真的应该使用 openssl_encrypt() & openssl_decrypt()
正如 Scott 所说,Mcrypt 不是一个好主意,因为它自 2007 年以来就没有更新过。
甚至还有一个 RFC 从 PHP 中删除 Mcrypt - https://wiki.php.net/rfc/mcrypt-viking-funeral