加密数据库内容

问题描述:

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

  1. 如果我MD5的一切,将PHP显示一切正常的方式,如没有MD5?

  2. 当我允许编辑内容时,我将不得不显示没有md5的信息,然后在提交时添加md5,是否正确?

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

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

谢谢。

+5

md5是一个散列或摘要。不加密。它不能(很容易)被逆转。 http://en.wikipedia.org/wiki/MD5 – 2011-01-28 16:30:45

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

如果你打算做数据库数据的应用程序级加密(而不是依赖于任何特定的RDBMS的加密功能),你将永远有对数据进行加密(代码),你把它前数据库和解密数据(在代码中),只要你拿它出了数据库。对于这样的系统,通常使用像AES这样的对称密钥加密算法。

+0

感谢亚当。那么加密的最佳方式是什么? – AAA 2011-01-28 16:38:49

+1

对于数据库存储,通常使用像AES这样的对称加密算法。 – 2011-01-28 16:40:46

如果我MD5的一切,将PHP显示一切正常的方式,就像没有md5?

没有。一切都将是一个MD5摘要。原始数据将(几乎)不可能从摘要中恢复。

当我允许编辑内容时,我将不得不显示没有md5的信息,然后在提交时添加md5,是否正确?

由于md5摘要不能(很容易)解码为原始数据,因此您必须将原始信息保存在某处。

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

没有。md5摘要不能(很容易)被颠倒以重建任何原始信息。

+1

由于有多个潜在输入会产生相同的输出,因此无法执行MD5(或任何哈希算法)摘要的100%逆转。上下文可以确定什么可能是有效的输入,但作为* general *算法,这是合理的不可能的。 – 2011-01-28 16:36:49

+0

谢谢S.Lott。那么加密的最佳方式是什么? – AAA 2011-01-28 16:39:29

据我所知,现在已知MD5并不是真正的安全散列函数。网上有些地方提供反向MD5服务,他们在那里收集了一个庞大的MD5数据库字符串。尝试使用SHA-512之类的技术,并使用迭代散列等技术使其更安全。 PHP有一个你可能希望签出的crypt()库,或者可能使用SQLite数据库加密。

MD5是单向哈希函数。它不会被解密。只是加密。

MD5是哈希函数!是单向函数。 您无法解码MD5哈希!

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

说明依赖于DB到DB。或多或少,每个数据库都有一个使用(和支付)的encription模块