第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

困惑為什么哈希姆,編碼,打印是不同的,然后寫,哈希姆,編碼,打印在Go中?

困惑為什么哈希姆,編碼,打印是不同的,然后寫,哈希姆,編碼,打印在Go中?

Go
慕哥6287543 2022-09-26 17:29:28
很抱歉標(biāo)題。我無法想出更好的方法來表達(dá)我的問題,如果其他人可以的話,我會很高興地改變它。哈舍爾定義為hasher := md5.New()無論如何,我很好奇為什么會這樣:fmt.Println(hex.EncodeToString(hasher.Sum([]byte(input))))給我 6869d41d8cd98f00b204e9800998ecf8427e,而這個(gè):hasher.Write([]byte(input)) fmt.Println(hex.EncodeToString(hasher.Sum(nil))給我49f68a5c8493ec2c0bf489821c21fc3b和這個(gè):fmt.Printf("%x\n", md5.Sum([]byte(input)))給我49f68a5c8493ec2c0bf489821c21fc3b。
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

通常不會對傳遞的切片進(jìn)行哈希處理。傳遞的切片用作目標(biāo):它將當(dāng)前哈希附加到它,并且不會更改基礎(chǔ)哈希狀態(tài)。 顯然在哈希計(jì)算中包括傳遞的切片。這兩個(gè)例子根本不同,不同的結(jié)果只是預(yù)期的。hasher.Sum()hasher.Write()

請務(wù)必閱讀文檔。散 列。哈??偤停ǎ?/code>

// Sum appends the current hash to b and returns the resulting slice.

// It does not change the underlying hash state.

Sum(b []byte) []byte

因此,當(dāng)您第一次調(diào)用時(shí),無論您傳遞給它什么,就結(jié)果哈希而言都無關(guān)緊要。如果您之前沒有寫入任何內(nèi)容,您將看到初始哈希值。hasher.Sum()hasher


當(dāng)您下次調(diào)用 時(shí),您將把 的字節(jié)寫入哈希,因此當(dāng)您調(diào)用 next 時(shí),您將看到 計(jì)算出的哈希值。由于您通過了 ,因此將分配一個(gè)新的切片來容納結(jié)果。hasher.Write([]byte(input))inputhasher.Sum(nil)inputnil


當(dāng)您再次調(diào)用 時(shí),如前所述:這不會更改哈希狀態(tài),傳遞的切片不用作輸入,而僅用作“返回”結(jié)果的目標(biāo),即當(dāng)前哈希值。因此,您將獲得與上次調(diào)用相同的哈希值。顯然,如果傳遞的切片沒有足夠的容量來存儲結(jié)果,則將分配/使用新的切片。hasher.Write([]byte(input))hasher.Sum(nil)


請參閱此完整且可運(yùn)行的示例,該示例可重現(xiàn)您的輸出:


input := "hi"

hasher := md5.New()

fmt.Println(hex.EncodeToString(hasher.Sum([]byte(input))))


hasher.Write([]byte(input))

fmt.Println(hex.EncodeToString(hasher.Sum(nil)))


fmt.Printf("%x\n", md5.Sum([]byte(input)))

在 Go 游樂場試用。


查看完整回答
反對 回復(fù) 2022-09-26
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號