Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 有没有办法使用bcrypt算法版本6?_Go_Hash_Bcrypt - Fatal编程技术网

Go 有没有办法使用bcrypt算法版本6?

Go 有没有办法使用bcrypt算法版本6?,go,hash,bcrypt,Go,Hash,Bcrypt,使用C程序中的crypt()函数,我得到了密码“toto”的以下哈希值: $6$QSX8hjVa$OJ9IAU50JSSAAM62MOO63EA4P1O8DC0ZCR6I8N5F4JRGE0BV0WRFEJWO4HGXAAMYO2ON5DWZE2INV9NDWVM1 但是,在使用以下代码时,我有一个错误: 主程序包 进口( “fmt” “操作系统” “golang.org/x/crypto/bcrypt” ) func main(){ 哈希目录:=“$6$QSX8hjVa$OJ9IAU50JSS

使用C程序中的
crypt()
函数,我得到了密码“toto”的以下哈希值:
$6$QSX8hjVa$OJ9IAU50JSSAAM62MOO63EA4P1O8DC0ZCR6I8N5F4JRGE0BV0WRFEJWO4HGXAAMYO2ON5DWZE2INV9NDWVM1

但是,在使用以下代码时,我有一个错误:

主程序包
进口(
“fmt”
“操作系统”
“golang.org/x/crypto/bcrypt”
)
func main(){
哈希目录:=“$6$QSX8hjVa$OJ9IAU50JSSAAM62MOO63EA4P1O8DC0ZCR6I8N5F4JRGE0BV0WRFEJWO4HGXAAMYO2ON5DWZE2INW9NDWVM1”
fmt.Println(bcrypt.CompareHashAndPassword([]字节(hashToCrack),[]字节(“toto”))
}

在我的项目中,使用带有$6$ID的bcrypt是必要的(更多详细信息请参见注释),但是
bcrypt
包似乎不支持此版本。是否有其他方法或我是否误用了包?

使用包
github.com/tredoe/osutil/user/crypt/sha512_crypt
解决了我的问题

$ go get github.com/tredoe/osutil/user/crypt/sha512_crypt
主程序包
进口(
“fmt”
“字符串”
“github.com/tredoe/osutil/user/crypt/sha512_crypt”
)
func main(){
哈希目录:=“$6$QSX8hjVa$OJ9IAU50JSSAAM62MOO63EA4P1O8DC0ZCR6I8N5F4JRGE0BV0WRFEJWO4HGXAAMYO2ON5DWZE2INW9NDWVM1”
c:=sha512_crypt.New()
hash,err:=c.Generate([]字节(“toto”),[]字节($6$QSX8hjVa$))
如果错误!=零{
恐慌(错误)
}
fmt.Println(strings.Compare(hashToCrack,hash))//打印0,因为它们是相同的
}

正如Steffen Ullrich在评论中提到的,
$6$
不是bcrypt,而是sha512crypt,正如我们在crypt手册页中看到的那样


hash
变量包含散列密码,因此我可以将散列值与此进行比较。

为了添加更多上下文,我完成了一个学校项目,在该项目中,我必须使用C程序强制执行$6$散列,我想将性能与使用goroutines的Go程序进行比较,基于相同的哈希。
$6$
不是bcrypt,而是sha512crypt。看见
$ go get github.com/tredoe/osutil/user/crypt/sha512_crypt
$ go run main.go
0