php-我应该加密电子邮件地址吗?

php-我应该加密电子邮件地址吗?,php,Php,当用户注册时,我应该按原样将他们的电子邮件存储在db中还是将其散列。 我希望以后能够解密它,所以我应该使用md5吗 谢谢大家! 加密电子邮件地址并不常见。如果有人真的想把他们的电子邮件保密,他们首先不会把它发给你的网站:)不,md5()-is。你不能解密它的值。通常用于不需要解密的密码。相反,您可以比较如下哈希: $salt = "adding some secret to increasse security"; if (md5($user_password . $salt) == $user

当用户注册时,我应该按原样将他们的电子邮件存储在db中还是将其散列。 我希望以后能够解密它,所以我应该使用md5吗


谢谢大家!

加密电子邮件地址并不常见。如果有人真的想把他们的电子邮件保密,他们首先不会把它发给你的网站:)

不,
md5()
-is。你不能解密它的值。通常用于不需要解密的密码。相反,您可以比较如下哈希:

$salt = "adding some secret to increasse security";
if (md5($user_password . $salt) == $user_password_hash_from_db) {
    ## password is ok
}

如果您希望能够解密您的值,那么使用php函数代替。但可能需要安装额外的模块


无论如何,我看不到任何实际的理由来加密电子邮件。

当你使用md5时,你将无法解密它。md5是一个-hash函数。

md5不是一种加密方法,而是一种单向散列。没有理由在数据库中加密电子邮件地址。我会让它们保持原样。

MD5是一个散列,这使得最不可能恢复原始值。如果你想取回电子邮件,应该使用加密而不是散列。

如果你打算以后解密它们,这将不是一个选项,因为它只对字符串进行散列,你会丢失原始数据


我建议您为此尝试一些内置的PHP加密函数。

其他答案说明了一切

但是,正如Ivan在回复中指出的那样,您应该始终至少使用md5()和salt加密哈希密码。

我同意电子邮件是一个(次要)信息安全问题,因为如果有人访问您的数据库,这将成为您泄露给世界的个人信息,但正如Ivan提到的,您需要一种双向加密/解密方法,以便能够将电子邮件拉回来

请注意,基本MD5哈希不再是安全的哈希

正如维基百科以许多不同的方式所说,不再安全():

美国教育部的US-CERT 国土安全部说MD5“应该 被认为是密码破译的 不适合进一步使用,“[7] 以及大多数美国政府申请 将需要移动到SHA-2 2010年之前的哈希函数系列。[8]

我认为它的一个主要问题是,现在到处都有md5哈希的彩虹表,所以裸md5非常容易受到暴力的影响


可以认为它是一个有用的工具,用于对复杂数据集进行小规模的破坏和清理,但它不再是一个真正安全的散列。可能有一些特殊的限制,你可以跳过,比如使用salt和执行嵌套的md5散列,以使它更安全,尽管我不是密码学家。您可能希望查看其他SO线程,例如一个线程,以获得良好的整体加密解决方案。

哈希(或多或少)会阻止解密。所以你肯定不想这么做。我讨厌人们否决这样的问题。他并不是在给出错误的建议,他是在问一个问题和一个他想澄清的概念。我将你的投票结果提高到0。你应该散列()所有电子邮件,并保留一个单独的表,其中包含键/对,这样你就可以删除后一个!注:只是开玩笑(程序员的幽默)当然,使用盐哈希存储密码是一个好主意。啊,假设每个人和他们的妈妈都知道“md5(‘密码’=‘5f4dcc3b5aa765d61d8327deb882cf99’”,因为每个重要的破解程序都会知道。“如果你想解密你的值,那么就使用密码”。这是错误的,如果你真的费心阅读PHP手册,你会发现它是一个散列函数。MD5从来不是“安全加密”;它不再像散列那样安全了。是的,我不喜欢使用精确的术语。编辑和制作CW。现代垃圾邮件方案的含义不同。电子邮件列表具有其所代表的隐私价值。该值很小,尤其是与密码相比,但它确实存在,因此加密方法是有益的,但对于电子邮件,它肯定需要是可逆的方法。