【发布时间】:2016-11-03 01:36:31
【问题描述】:
我有我从 2011 年开始计算哈希的旧代码
private static $key = 'G@W351T35.cz#€2011GAMESITES';
/**
* Computes salted password hash.
* @param string
* @return string
*/
public static function calculateHash($password)
{
$text = $password;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$key, $text, MCRYPT_MODE_ECB, $iv);
return base64_encode($crypttext);
}
当我现在尝试运行它时,我得到一个错误:
警告:mcrypt_encrypt():不支持大小为 29 的密钥 算法。 ..\Hash.php 中仅支持大小为 16、24 或 32 的键 第 27 行
我知道从 2011 年开始需要很长时间,现在可以有更好的方法来做到这一点,但我需要让它从以前的版本开始,以解决一些历史问题。我做错了什么? 我什至看不出 29 是什么意思。
或者如果我仍然有一个函数,是否有办法打破哈希? 有了这个,我就可以开始使用计算哈希的新方法了。
感谢您的建议
【问题讨论】:
-
至于未来实现密码哈希:不要自己发明,而是使用现有且经过充分研究的KDF。
bcrypt就是一个很好的例子,它通过 PHP 的password_hash和password_verify得到支持。