为什么我的加密包给我无效的魔术前缀错误?



我有以下代码:

import "github.com/kless/osutil/user/crypt/sha512_crypt"
c := sha512_crypt.New()
hash, err := c.Generate([]byte("enter-new-password"), []byte("$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"))
if err != nil {
panic(err)
}

它产生了以下错误

http:紧急服务 192.168.0.16:56730:无效的魔术前缀

为什么会发生这种情况,我该如何解决?

为什么会发生这种情况,我该如何解决?


您的魔术前缀无效。


github.com/tredoe/osutil/user/crypt/sha512_crypt/sha512_crypt.go
if !bytes.HasPrefix(salt, c.Salt.MagicPrefix) {
return "", common.ErrSaltPrefix
}

读取加密包代码。


PHP: crypt — 单向字符串 散列法

PHP: password_hash — 创建密码哈希

阅读 PHP 文档。

请参阅您之前的问题:golang 相当于 PHP crypt((。


提供有效的魔术前缀。


例如

package main
import (
"fmt"
"github.com/kless/osutil/user/crypt/sha512_crypt"
)
func main() {
c := sha512_crypt.New()
magic := sha512_crypt.MagicPrefix
hash, err := c.Generate(
[]byte("enter-new-password"),
[]byte(magic+"$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"),
)
if err != nil {
panic(err)
}
fmt.Println(hash)
}

输出:

$6$$.AVE44JRnLFr9TZx3zASJX6V3Uu0jpnrOV6fW1T5NHy3MUKPaJXHGvjooxrAkYsuIL2HwS/sYgzUZ.cg8FTtz/

注意:

import "github.com/kless/osutil/user/crypt/sha512_crypt"

现在是新位置的别名

import "github.com/tredoe/osutil/user/crypt/sha512_crypt"

最新更新