当用户注册时,我应该将他们的电子邮件存储在数据库中还是进行哈希处理。由于我希望能够稍后解密它,所以我应该使用md5吗?
谢谢!
谢谢!
加密电子邮件地址并不常见。如果有人真的想保护他们的电子邮件隐私,他们不会首先将其提供给您的网站 :)
MD5是一种哈希算法,使得几乎不可能恢复原始值。如果您想要获取电子邮件,请使用加密而不是哈希。
我同意电子邮件是(轻微的)信息安全问题,因为如果有人访问了你的数据库,那么这些电子邮件就成为了你泄露出去的个人信息,但是正如Ivan所提到的,你需要一种双向加密/解密方法来能够取回这些电子邮件。
请注意,基本的MD5哈希已经不再是安全哈希。
正如维基百科以多种不同的方式所说,已经不再安全(http://en.wikipedia.org/wiki/MD5):
美国国土安全部的US-CERT表示,MD5“应被视为密码学上破解和不适合进一步使用”,大多数美国政府应用程序将在2010年前转向SHA-2哈希函数家族。[8]
我认为它的一个主要问题是现在有很多MD5哈希的彩虹表,所以裸的MD5非常容易受到暴力破解的攻击。
将其视为一种有用的工具,可用于对复杂数据集进行轻微混淆和清理,但它不再是真正安全的哈希。可能有一些特殊的技巧可以跳过,比如同时使用盐和执行嵌套的MD5哈希来使其更安全,但我不是密码学家。您可能需要查看其他SO线程,例如this一个,以获取良好的整体加密解决方案。
MD5不是加密方法,而是单向哈希。在数据库中没有必要加密电子邮件地址。我会将它们保留原样。
其他答案都已经说明了这个问题。
然而,正如Ivan在他的回复中所指出的那样,您应该始终使用至少md5()和盐值对密码进行哈希处理,而不是加密。