【发布时间】:2012-02-27 07:07:40
【问题描述】:
我知道有十几个关于此的问题。但我想知道使用 sha1、sha512 等哈希方法加密登录系统的密码是否更好,或者为此使用 Mcrypt 密码更好?
我知道用 sha 等哈希方法加密后解密是不可能的,如果使用 mcrypt 加密是可能的。但是使用 mcrypt 是否安全,因为您也可以解密?
【问题讨论】:
-
散列与加密无关。散列过程是单向的,不可逆的(至少不是设计使然)。对密码使用散列,忘记加密,因为你不想“解密”那些。使用 SHA-256、SHA-512 或 Whirlpool。将来还会有 SHA-3 系列。另外,混合一些盐和一个与数据库盐分开的文件系统密钥。
-
@rFactor - 我明白,而且我已经在使用 SHA512 和 salt 密钥。是的,我没有存储盐,只是通过的哈希值。文件系统密钥是什么意思?
-
如果您在文档根目录之外的文件系统上有一个只是二进制文件的单个密钥,您可以加载它的内容并将其与盐和密码一起散列,您可以做得更好。这意味着为了破解哈希,您需要同时访问文件系统和数据库。
-
您的意思是可以从认证提供商处购买的 SSL 密钥,或者我从哪里获得文件系统密钥?
-
单次迭代的 SHA512 是一个糟糕的选择。使用慢速方案,例如 PBKDF2、bcrypt 或 scrypt。
标签: php hash encryption mcrypt