2012-11-27 33 views

Trả lời

47

Gói hash hữu ích cho việc này. Lưu ý rằng nó trừu tượng hóa hơn việc triển khai băm cụ thể. Một số gói sẵn sàng được tìm thấy trong gói subdirectories.

Ví dụ:

package main 

import (
     "fmt" 
     "hash/fnv" 
) 

func hash(s string) uint32 { 
     h := fnv.New32a() 
     h.Write([]byte(s)) 
     return h.Sum32() 
} 

func main() { 
     fmt.Println(hash("HelloWorld")) 
     fmt.Println(hash("HelloWorld.")) 
} 

(Cũng here)


Output:

926844193 
107706013 
+0

Ngoài ra, có thể sử dụng cá thể đơn và 'Write' /' Reset', thay vì tạo 'New32a' mỗi lần. Tôi không biết nó tốn bao nhiêu. Ví dụ: https://play.golang.org/p/aUeNBo755g –

1

Đây là một chức năng mà bạn có thể sử dụng để tạo ra một số băm:

// FNV32a hashes using fnv32a algorithm 
func FNV32a(text string) uint32 { 
    algorithm := fnv.New32a() 
    algorithm.Write([]byte(text)) 
    return algorithm.Sum32() 
} 

Tôi đặt cùng một nhóm những chức năng tiện ích băm ở đây: https://github.com/shomali11/util

Bạn sẽ tìm thấy FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256SHA512

Các vấn đề liên quan