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

时间:2009-11-22 14:47:53

标签: php

当用户注册时,我应该按原样将他们的电子邮件存储在数据库中还是哈希。 我希望以后可以解密它,所以我应该使用md5吗?

谢谢你!

8 个答案:

答案 0 :(得分:16)

不,md5() - 是one-way hash function。你不能解密它的价值。通常用于不需要解密的密码。相反,你比较哈希:

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

如果您希望能够解密您的值,请改用crypt php函数。但它可能需要安装其他模块。

任何方式我都没有看到加密电子邮件的任何实际理由。

答案 1 :(得分:3)

加密电子邮件地址并不常见。如果有人真的想要将他们的电子邮件保密,他们首先不会将其发送到您的网站:)

答案 2 :(得分:1)

MD5是一个哈希值,这使得几乎无法获得原始值。如果您想要收回电子邮件,则应使用加密而不是哈希。

答案 3 :(得分:1)

我同意电子邮件是一个(次要的)信息安全问题,因为如果有人访问您的数据库,那么这就成了您向世界传播的个人信息,但您会想要双向加密/正如Ivan所说,解密方法能够将电子邮件撤回。

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

维基百科以许多不同的方式说,不再安全(http://en.wikipedia.org/wiki/MD5):

  

US-CERT美国美国商务部   国土安全部称MD5“应该是   考虑加密破坏   并且不适合进一步使用,“[7]   和大多数美国政府的申请   将被要求转移到SHA-2   哈希函数系列到2010年。[8]

我认为它的一个主要问题是这些天都有md5哈希的彩虹表,所以裸md5很容易受到暴力破坏。

将它视为一种有用的工具,用于轻微的遮蔽和消毒复杂的数据集,但它不再是一个真正安全的哈希。可能会有一些特殊的箍,你可以跳过,比如使用salt和执行嵌套的md5哈希以使其更安全,尽管我不是密码学家。您可能希望查看其他SO线程,例如this,以获得良好的整体加密解决方案。

答案 4 :(得分:0)

当您使用md5时,您将无法解密它。 md5是一个one-way - 哈希函数。

答案 5 :(得分:0)

md5不是加密方法,它是单向散列。没有理由加密数据库中的电子邮件地址。我会原样离开它们。

答案 6 :(得分:0)

如果您打算稍后解密,MD5将不是一个选项,因为只有哈希字符串,您将丢失原始数据。

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

答案 7 :(得分:0)

其他答案都说明了。

然而,正如Ivan的回复所指出的那样, 总是加密哈希密码至少包含md5()和salt。< / p>