本文介绍了为什么我的crypt包会给我无效的魔术前缀错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码:
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)
}
它产生了以下错误
为什么会发生这种情况以及如何解决?
Why does this happen and how do I resolve it?
推荐答案
您的魔术前缀无效.
You have an invalid magic prefix.
github.com/tredoe/osutil/user/crypt/sha512_crypt/sha512_crypt.go
if !bytes.HasPrefix(salt, c.Salt.MagicPrefix) {
return "", common.ErrSaltPrefix
}
读取crypt软件包代码.
Read the crypt package code.
阅读PHP文档.
请参阅您先前的问题: golang等同于PHP crypt().
See your earlier question: golang equivalent of 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"
这篇关于为什么我的crypt包会给我无效的魔术前缀错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!