PHP、MySQL和AES用户数据加密/解密
我不熟悉AES加密,但正在尝试构建一个解决方案:PHP、MySQL和AES用户数据加密/解密,php,mysql,encryption,aes,Php,Mysql,Encryption,Aes,我不熟悉AES加密,但正在尝试构建一个解决方案: 接受消费者数据 使用AES和 “公开”密钥 将该数据存储在MySQL数据库中 具有拉取和解密的能力 仅使用私钥存储数据 (存储在我的个人电脑上,而不是 服务器本身) 我意识到这可能有些过分,但我想对我的消费者数据进行过度保护 需要注意的几点: 这不是信用卡信息 所以请不要写信告诉我 关于PCI-DSS,它是另一种形式的 个人信息均在500以下 每个字段的长度为个字符 我可以储存消费者的物品 信息和其他 数据库由一个唯一的 额外安全性的成员ID
- 接受消费者数据
- 使用AES和 “公开”密钥
- 将该数据存储在MySQL数据库中
- 具有拉取和解密的能力 仅使用私钥存储数据 (存储在我的个人电脑上,而不是 服务器本身)
- 客户输入其电话号码 在线
- 输入的电话号码是加密的 使用密钥A联机并存储在 mysql数据库
- 客户将永远无法 在这里再次看到完整的电话 点,但肯定可以更新它 (第n步通过关键流程) 时间)
- 作为一名系统管理员,我只能通过在本地计算机上下载和解密数据来访问数据(或者我必须首先上载一个临时文件,该文件用于解密我需要的数据)
<?php
if (isset($_SERVER['HTTPS']) )
{
echo "SECURE: This page is being accessed through a secure connection.<br><br>";
}
else
{
echo "UNSECURE: This page is being access through an unsecure connection.<br><br>";
}
// Create the keypair
$res=openssl_pkey_new();
// Get private key
openssl_pkey_export($res, $privatekey);
// Get public key
$publickey=openssl_pkey_get_details($res);
$publickey=$publickey["key"];
echo "Private Key:<BR>$privatekey<br><br>Public Key:<BR>$publickey<BR><BR>";
$cleartext = '1234 5678 9012 3456';
echo "Clear text:<br>$cleartext<BR><BR>";
openssl_public_encrypt($cleartext, $crypttext, $publickey);
echo "Crypt text:<br>$crypttext<BR><BR>";
openssl_private_decrypt($crypttext, $decrypted, $privatekey);
echo "Decrypted text:<BR>$decrypted<br><br>";
?>
编辑3-也许不是“白痴”,但分号讨厌我
我把分号放错地方了。我正在使用函数:file\u get\u contents(),但是有没有更喜欢的方法来读取.pem文件的数据?。。。我觉得这不可能。MySQL的AES_解密方法需要编码的消息和原始密钥才能解密某些内容。这意味着任何可以获得加密密钥的人都可以解密消息。您应该能够在个人计算机上生成公钥/私钥对,然后在应用程序中发布公钥,以便对数据进行加密。这样,服务器就永远看不到私钥,如果服务器被黑客攻击,数据仍然是安全的 您需要确保整个事务通过SSL进行。客户端可以生成一个随机会话密钥,使用该密钥加密数据(使用AES),然后使用应用程序中的公钥加密密钥(使用RSA),然后将加密的数据和密钥发送到服务器。您可以将整个blob存储在一个或两个数据库字段中。解密数据的唯一方法是先解密密钥,唯一的方法是在个人计算机上使用私钥 更新 退房。它是一个JQuery插件,似乎允许这种类型的场景。我没有使用它的经验,但在我看来这是一个好的开始 新更新 为了明确我的建议,并解决您的编辑问题: 不能只使用AES加密。对于AES,有一个密钥用于加密和解密。密钥必须存在于加密操作发生的任何地方,无论是在客户端代码中,还是在web服务器上。在第一种情况下,任何人都可以得到你的钥匙。在第二种情况下,如果web服务器被破坏,那么密钥和数据也有风险 解决方案是将良好、强大的AES加密与公钥加密(RSA)结合使用。我建议在客户端处理加密,原因我将在下面概述。不过,以下是我建议的步骤: