加密数据库内容
如果我没有错,当你想加密数据库中的内容时,你将使用md5。我现在使用密码。但是现在我想为企业客户的所有个人信息等添加加密。以下是我的问题:加密数据库内容
如果我MD5的一切,将PHP显示一切正常的方式,如没有MD5?
当我允许编辑内容时,我将不得不显示没有md5的信息,然后在提交时添加md5,是否正确?
如果有人访问数据库,他们只会看到md5。但是,如果他们下载它,然后删除MD5,他们不会看到所有的信息?
正如你可以告诉我是一个压力下的业余爱好者。如果我对md5的想法错了,请纠正我。如果是这样,我怎么能加密数据库记住,信息将随时由用户编辑。
谢谢。
MD5是哈希算法,而不是加密算法。散列是单程;也就是说,你不能把散列数据转换回原始数据。 MD5用于哈希密码(好吧,哈希算法用于哈希密码... MD5通常被认为是不安全的,不适合涉及安全性的应用...比如密码),因为所有你关心的是密码匹配,而不是密码实际上是是。这允许您在数据库中存储令牌(哈希),您可以使用该令牌进行比较而不实际存储密码。
如果你打算做数据库数据的应用程序级加密(而不是依赖于任何特定的RDBMS的加密功能),你将永远有对数据进行加密(代码),你把它为前数据库和解密数据(在代码中),只要你拿它出了数据库。对于这样的系统,通常使用像AES这样的对称密钥加密算法。
感谢亚当。那么加密的最佳方式是什么? – AAA 2011-01-28 16:38:49
对于数据库存储,通常使用像AES这样的对称加密算法。 – 2011-01-28 16:40:46
如果我MD5的一切,将PHP显示一切正常的方式,就像没有md5?
没有。一切都将是一个MD5摘要。原始数据将(几乎)不可能从摘要中恢复。
当我允许编辑内容时,我将不得不显示没有md5的信息,然后在提交时添加md5,是否正确?
由于md5摘要不能(很容易)解码为原始数据,因此您必须将原始信息保存在某处。
如果有人访问数据库,他们只会看到md5。但是,如果他们下载它,然后删除MD5,他们不会看到所有的信息?
没有。md5摘要不能(很容易)被颠倒以重建任何原始信息。
由于有多个潜在输入会产生相同的输出,因此无法执行MD5(或任何哈希算法)摘要的100%逆转。上下文可以确定什么可能是有效的输入,但作为* general *算法,这是合理的不可能的。 – 2011-01-28 16:36:49
谢谢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模块
md5是一个散列或摘要。不加密。它不能(很容易)被逆转。 http://en.wikipedia.org/wiki/MD5 – 2011-01-28 16:30:45