加密数据库内容

时间:2011-01-28 16:29:15

标签: database encryption hash md5 salt

如果我没有错,当你想加密数据库中的内容时,你将使用md5。我现在用它来输入密码。但现在我想为企业客户的所有个人信息添加加密。以下是我的问题:

  1. 如果我md5一切,php会以正常方式显示所有内容,比如没有md5吗?

  2. 当我允许编辑内容时,我必须在没有md5的情况下显示信息,然后在提交时添加md5,对吗?

  3. 如果有人访问数据库,他们只会看到md5。但如果他们下载然后删除md5,他们会不会看到所有信息?

  4. 你可以告诉我,我是一个在压力下的业余爱好者。如果我对md5的想法错了,请纠正我。如果是这样,我如何加密数据库,记住信息将由用户随时编辑。

    感谢。

5 个答案:

答案 0 :(得分:9)

MD5是一种散列算法,而不是加密算法。哈希是单向;也就是说,您不能将散列数据转换回原始数据。 MD5用于哈希密码(好吧,哈希算法用于哈希密码...... MD5通常被认为是不安全的,不适合涉及安全性的应用......比如密码)因为你关心的所有是密码是否匹配,而不是密码 。这允许您在数据库中存储令牌(哈希),您可以使用该令牌进行比较,而无需实际存储密码。

如果您要对数据库数据进行应用程序级加密(而不是依赖于任何特定于RDBMS的加密功能),那么在将数据放入之前,您将始终必须加密数据(在代码中) 数据库并在数据库中数据库中解密数据(在代码中)。对于像这样的系统,通常使用像AES这样的对称密钥加密算法。

答案 1 :(得分:3)

MD5是一个散列函数!是单向函数。 你无法解码MD5哈希!

如果您使用MD5对内容进行编码,则会丢失数据! 而是使用3DES,BLOWFISH或其他加密方法!

铭文取决于DB到DB。或多或少每个数据库都有一个可以使用(并付费)的编码模块

答案 2 :(得分:2)

  

如果我md5的一切,php将以正常的方式显示所有内容,就像没有md5一样?

不。一切都将是md5摘要。原始数据(几乎)无法从摘要中恢复。

  

当我允许编辑内容时,我必须在没有md5的情况下显示信息,然后在提交时添加md5,对吗?

由于md5摘要无法(轻松)解码为原始数据,因此您必须将原始信息保存在某处。

  

如果有人访问数据库,他们只会看到md5。但如果他们下载然后删除md5,他们不会看到所有信息吗?

不。 md5摘要不能(轻松)反转以重建任何原始信息。

答案 3 :(得分:2)

据我所知,MD5现在并不是真正的安全散列函数。 Web上有一些提供反向MD5服务的地方,他们收集了一个巨大的字符串数据库,其MD5等价物。尝试使用像SHA-512这样的东西,并使用迭代散列等技术使其更安全。 PHP有一个你可能想要签出的crypt()库,或者可能使用SQLite数据库加密。

答案 4 :(得分:1)

MD5是单向散列函数。它不会被解密。只是加强了。