我有那些方法(伪代码):
string predefinedsalt = "03jf0j02j302jf0j3f08h3298fbckm91jr192jr091j2-r01"
string dynsalt(user)
{
return md5(user.id)
}
要哈希密码,我想使用以下方法之一:
md5(user.password)
md5(user.password + predefinedsalt)
md5(user.password + dynsalt(user))
md5(md5(user.password) + dynsalt(user))
这种方式更安全吗?
答案 0 :(得分:3)
您的建议都不是为散列密码保存。使用具有成本因子(如BCrypt,PBKDF2或SCrypt)的慢哈希函数,并让该函数从操作系统的随机源生成盐。
密码破解工具已经开始实现与MD5的这种组合,而MD5的速度太快了。可以使用通用硬件计算100 Giga MD5 per second。