【发布时间】:2013-07-11 22:24:29
【问题描述】:
我们有一个用 PHP/MySQL (Joomla 1.5) 编写的现有网站,其中用户的密码使用 MD5 存储在 TABLE 中。这个网站将被彻底改造,我想知道用户的密码是否可以简单地复制并在新的 MySQL TABLE 中重新创建并且仍然有效?即使在不同的系统上,MD5 用户的密码是否也可以移植到另一个 MySQL?还是 MySQL 上的 MD5 加密被其他因素改变了?谢谢!
【问题讨论】:
-
如果 MD5 不可移植,那它就完全没用了:散列算法的全部意义在于它应该始终从相同的输入产生相同的值(无论平台如何); MD5 的缺点是它可以从太多不同的输入中产生相同的值
-
如果您当前的系统使用盐来保护密码哈希,请确保您在新网站上使用相同的密钥/功能(无论您使用什么数据库或编程语言)。
-
这是任何散列算法的“缺点”——甚至不是“太多”——有无限许多输入映射到给定的散列值。但是,MD5、SHA1 等算法的设计目的是使计算输入产生的哈希值变得困难。
-
@MarkBaker 我问是因为我记得在 UNIX /etc/password 文件密码是加密的,我被告知它不可移植。我想确保 MD5 是,否则必须要求该项目上的数千个现有用户登录重新创建他们的登录,并且如果没有必要,我不想给用户带来不便。
-
@Edward 通常被加密且不可移植的操作系统内容是因为它是使用机器/用户独有的公钥/私钥对加密的。在 Windows 上就是这样。但那是加密,这只是普通的散列。