我正在努力实现一些加密函数,其中需要哈希操作(我想计算自定义结构的哈希)所以我想使用cryptogolang包中的SHA256哈希函数.但是,我注意到当我为同一输入多次运行哈希函数时,它会返回不同的值.我的理解是SHA函数为单个输入值返回相同的哈希输出.下面是我对哈希函数的实现:
func myHash(s MyStruct) []byte{
bytes := []byte(fmt.Sprintf("%v", s))
h := sha256.New()
h.Write(bytes)
return h.Sum(nil)
}
Run Code Online (Sandbox Code Playgroud)
并myStruct具有以下字段:
type MyStruct struct {
elliptic.Curve // I use elliptic.P224() as my curve
X, Y, Z *big.Int
}
Run Code Online (Sandbox Code Playgroud)
对于相同的输入值,myHash函数的输出运行多次SInput如下:
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[172 219 215 153 250 30 31 136 175 47 25 178 231 84 90 173 31 130 136 131 169 23 98 198 198 109 255 76 228 134 100 191]
[31 114 57 247 85 214 151 174 124 255 5 200 17 200 198 107 105 56 53 126 233 242 228 74 17 87 238 7 136 100 80 160]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[172 219 215 153 250 30 31 136 175 47 25 178 231 84 90 173 31 130 136 131 169 23 98 198 198 109 255 76 228 134 100 191]
[172 219 215 153 250 30 31 136 175 47 25 178 231 84 90 173 31 130 136 131 169 23 98 198 198 109 255 76 228 134 100 191]
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |