我正在GoLang中使用我的授权模块。在我们使用PHP5的crypt函数之前。散列生成像SHA-512:在Go中生成crypt()sha512哈希
$6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
并存储在数据库中。但现在我需要在GoLang中使它工作。我在Google上搜索过并尝试过不同的东西,例如:
t512 := sha512_crypt.Crypt("rasmuslerdorf", "$6$usesomesillystringforsalt$")
fmt.Printf("hash: %v\n", t512)
但是所有的东西都会生成不同的东西。谁可以进一步帮助我们?
我们想验证并创建像PHP版本的哈希。
在此先感谢。
PHP版本的外观如何?在这里发布的示例中,您将哈希看起来像是您之后生成的字符串的开头。你应该(可能)对salt + password进行哈希处理,然后追加$ 6 $ rounds $ salt $。您还需要引入一个循环来实际使用轮回号码。 – JimL 2014-10-05 06:55:42
如果不需要与现有哈希兼容,请不要使用SHA-512,请使用Go的bcrypt库(http://godoc.org/code.google.com/p/go.crypto/bcrypt)。 SHA-512作为一种合适的密码散列函数还有很长的路要走。 – elithrar 2014-10-06 03:04:55
目前我们坚持SHA-512哈希函数。在我们使用md5之前,我们将其更改为SHA-512。每次用户登录系统时,系统都会检查sha-512哈希是否存在。如果不是,请用md5散列验证。如果md5散列正确,则使用SHA-512散列进行加密并除去md5散列。这样我们也可以去更好的功能。 – 2014-10-06 04:38:26