【问题标题】:What is the best way to encrypt user email addresses in PHP?在 PHP 中加密用户电子邮件地址的最佳方法是什么?
【发布时间】:2016-06-28 04:30:59
【问题描述】:

我目前正在使用 sha1(我不需要知道我的用户的电子邮件地址,但它们在我的网站上以登录表单的形式使用,用户必须输入电子邮件和密码才能登录),但是我不知道'不知道 sha1 如何处理大写字母和点,因为我假设某些电子邮件服务提供商区分大小写,因此例如我可能有两个用户的电子邮件地址相同但大写不同。

抱歉英语不好。

sha1 是否正确加密点和大写字母?电子邮件地址是否有更好的加密方式?你会建议我做什么?

【问题讨论】:

  • 虽然理论上电子邮件地址可能区分大小写,但我认为 99% 的电子邮件地址不区分大小写。因此,问题可能是您是否真的想强制您的用户每次都使用完全相同的大小写 - 因为用户名和电子邮件地址都被广泛认为不区分大小写(恕我直言)。在所有情况下,sha1 都可以处理它 - 仅适用于字符子集的加密哈希函数基本上毫无价值。
  • 如果 email=username 根本不加密,只是密码
  • 我看不出加密电子邮件地址有什么真正意义。
  • SHA 不是加密,它是一种单向加密哈希。至少使用 SHA156。
  • @zaph:你不是说 256 吗?

标签: php email encryption md5 sha1


【解决方案1】:

电子邮件地址不区分大小写,因此您绝不应该遇到两个用户拥有相同电子邮件地址但大小写不同的情况。

为确保即使同一用户的大小写发生变化,您的哈希也始终有效,最好的办法是在哈希之前将电子邮件地址转换为小写(或大写)。

根据您这样做的原因,我还将按照其他人的建议更改为更新的变体(SHA-2 或 SHA-3)和/或查看@Object Manipulator 提到的摘要身份验证。

【讨论】:

    【解决方案2】:

    我认为加密电子邮件地址字段不是一个好主意。通常,需要散列的是密码字段。

    但是,如果您愿意让您的应用程序更加安全,您可以尝试 Digest Authenticate 技术。在这里,用户名和密码的组合以及其他服务器变量被加密。

    你可能想看看这个:DIgest Authentication

    希望这会有所帮助。

    和平! xD

    【讨论】:

    • 为什么您认为加密 eamil 地址不是一个好主意?抱歉,我对加密/密码学知之甚少,所以我真的很好奇我不应该加密它们的原因。加密电子邮件地址的缺点是什么?
    猜你喜欢
    • 2010-10-19
    • 2011-06-14
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多