php - 在mysql中存储加密的字符串

时间:2010-10-29 22:20:57

标签: php mysql encryption

我需要存储客户的驾驶执照#(大部分时间)(或个人ID),因此当他们来挑选他们的产品时,他们可以根据他们的身份识别自己。这通常是我国各处处理的方式(不幸的是)。但是,我想将这个#的加密存储在mysql中。我现在可以使用AES_ENCRYPT,但是,我的问题是,如果我对$key进行硬编码,那么获得访问服务器的攻击者可以轻松解密所有拥有该密钥的字段。我怎么处理这个?

我的想法是使用openssl_public_encrypt并使用公钥和私钥,但不知道如何实现它。 (任何有用的解释链接?)可能是非对称密钥RSA?

如果需要,我可以使用几种物理服务器。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

为什么需要非对称地加密这些许可证?

  1. 验证用户是否提供有效许可。
  2. sha1许可证并保存到数据库。
  3. 当您查找许可证时,请输入用户输入并检查其是否匹配。

答案 1 :(得分:0)

我在传递过程中实现这一目标的方法并不是存储完整的细节。

您需要的数字将被哈希。更多 - 其中一些值的集合已经以您选择的方式加密了。

您可以使用有关用户的一些相关信息。说出用户的电子邮件或您生成的ID号。

当用户验证说“12345678”时,您已经将1458的哈希值设置为“$£%$ dfovm $£$”,其中包含部分电子邮件。

这样,如果某人可以获得访问权限,他们就无法检索所有用户号码。此外,如果他们以某种方式将字符串的解密版本拼凑在一起 - 它将是许可证号码和其他一些信息的噱头。

答案 2 :(得分:0)

一旦攻击者可以访问您的服务器,他们就可以运行您的代码。因此,您的服务器必须解密为纯文本才能使用,您的攻击者也可以。如上所述,您最好的选择是以与密码相同的方式加密ID,单向,然后加密客户输入并进行比较,这样即使您无法访问初始ID。