Golang的md5 hash計算


Golang計算md5值的方法都是接收byte型slice([]byte)。而且使用習慣上也覺得略奇怪。

看了好幾個例子才看懂。

感覺Golang標准庫在設計這些模塊的時候,都會考慮使用帶New關鍵字工廠生成一個該類型的結構體對象。然后再使用改對象的方法進行操作。

 

md5包就是這樣,來看例子:

s := "api_key" + ApiKey + "param" + Param + "time" + time + "version" + version + ApiSecret
signByte := []byte(s)
hash := md5.New()
hash.Write(signByte)
return hex.EncodeToString(hash.Sum(nil))

第一行我拼接了一個字符串。

第二行我將這個字符串轉成byte型數組並賦值給了sighByte。

第三行我new了一個md5的實現了hash.Hash的結構體。

第四行我調用這個結構體的方法Write將我需要計算md5的[]byte傳入進去。

第五行我調用hex.EncodeToSring方法來把計算結果轉換成16進制字符串。其中hash.Sum(nil)方法可以生成前面Write進去的signByte變量的128bit md5值。這個hash.Sum方法並不是我們在操作其它語言的那種使用習慣,將值傳遞進去然后返回hash,這里其實是追加一個值一並生成hash。由於我們不需要再追加值了,所以傳入nil得到signByte的hash值。

 

 

Reference:

http://stackoverflow.com/questions/24234322/golang-md5-sum-function  golang-md5-sum-function


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM