2011-08-20 34 views
0

如果我在我的密码编码方案中使用HMACSHA256.ComputeHash并在一台服务器上生成密码哈希值,那么以后需要迁移到另一台服务器时,我的哈希值是否仍然编码相同?我记得有一些关于machineKey的设置涉及到密码操作,但我并不完全熟悉。HMACSHA256散列可以从一台服务器转移到另一台服务器吗?

+1

为什么不使用像bcrypt,scrypt或PBKDF2这样的密码派生函数? –

回答

3

他们是否仍然编码它取决于你如何创建HMACSHA256对象。它将使用您实例化它的任何密钥来执行散列,或者如果您未指定密钥,它将生成一个随机密钥。只要你传递相同的密钥,它就会生成相同的哈希值。

0

HMAC根据秘密和要验证的数据计算散列值。为了让两台服务器计算相同的HMAC,他们将不得不分享这个秘密,这可能并不是秘密。为了能够验证旧密码,秘密将需要被修复,或者如果可以改变的话,沿着存储的密码以某种方式被引用,这实际上是一种盐。

在密码存储设置中使用HMAC很奇怪,它不是一个合适的密码派生函数(方式太快,内存不够密集),并且秘密不会带来太多价值,如果有的话,看到它必须是固定的不像正确的HMAC用法,其中秘密是由通信双方就会话达成一致并在之后被遗忘)。

相关问题