golang bcrypt returns 以字节为单位

golang bcrypt returns in Bytes

我正在使用 Golang Bcrypt 算法,它 return 以字节为单位

password := []byte("MyPassword")

hashedPassword, err := bcrypt.GenerateFromPassword(password, 12)

上面的代码 return 是

的哈希密码

[36 50 97 36 49 50 36 103 118 90 90 104 82 114 99 88 113 81 46 48 69 52 105 51 82 71 53 104 101 83 79 107 80 1103 83 53 110 97 99 82 106 56 68 66 54 84 89 83 107 100 108 87 67 115 57 77 97] 我的问题是;这是否与我在 Java 和 C# 中使用的字符串实现一样保存,其中 Hashpassword 在字符串、数字和其他字符中为 return?我已经从 https://godoc.org/golang.org/x/crypto/bcrypt#CompareHashAndPassword 获得代码并对其进行测试。

是的,bcrypt 的函数确实对字节切片进行操作,但是,返回的散列是 base64 编码的。因此,可以通过进行字符串转换来获得散列密码的字符串表示形式:

hashedPasswordStr := string(hashedPassword)

This question 提供了为什么数组比字符串更适合存储密码的一些原因(不同的语言,但相同的原则)。