我正在使用Golang Bcrypt算法,它以字节为单位返回
password := []byte("MyPassword")
hashedPassword, err := bcrypt.GenerateFromPassword(password, 12)
上面的代码返回
的hashPassword[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 110 53 103 53 99 84 110 97 99 82 106 56 68 66 54 84 89 83 107 100 108 87 67 115 57 77 97] 我的问题是;是否像我在Java和C#中使用的字符串实现一样保存,其中Hashpassword将以字符串,数字和其他字符返回?我有代码并从https://godoc.org/golang.org/x/crypto/bcrypt#CompareHashAndPassword进行测试。
答案 0 :(得分:4)
是的,bcrypt
的函数确实对字节切片进行操作,但是,返回的散列是base64编码的。因此,可以通过执行字符串转换来获取散列密码的字符串表示形式:
hashedPasswordStr := string(hashedPassword)
This question提供了一些理由,为什么数组首选用于在字符串上存储密码(不同语言,但原理相同)。