【发布时间】:2016-02-21 21:19:39
【问题描述】:
我有一张表,其中包含用户的加密电子邮件地址。当新用户注册时,我想检查输入的电子邮件地址是否已存在于表中。我使用 php 中的 openssl_encrypt 函数来加密每个电子邮件地址。由于即使将相同的字符串作为参数传递,该函数也会返回不同的加密值,因此我无法检查电子邮件地址是否已存在于表中。什么是加密和检查电子邮件地址是否存在于表中的可行但安全的方法?
【问题讨论】:
-
这个answer 涉及到
hash的使用可能有帮助吗? -
^ 一件非常重要的事情要记住...确保确保在加密它们并将它们存储在数据库中之前将电子邮件地址小写(并将电子邮件小写用于比较);人们真的与电子邮件中的大小写不一致,因为我发现很难!
-
嘿 - 差不多 4 年前我几乎问过同样的问题:stackoverflow.com/questions/9020238/…
-
散列似乎是要走的路。使用
SHA-256算法和 php 内置的hash函数是个好主意还是有更好的哈希方法? -
您可以使用数据库中的
BLOB数据并使用MySQL 内置的AES_ENCRYPT()函数存储电子邮件。然后,当您需要查找电子邮件地址时,您可以执行WHERE AES_ENCRYPT(:email, :key) = user.email... 其中:email是表单中的电子邮件地址,:key是您正在使用的加密密钥(可以是任何东西,设置在config.php 文件,如果你喜欢,只要它在你的文档根目录之外)。
标签: php mysql encryption