首页 > 编程 > Golang > 正文

Go语言常见哈希函数的使用

2020-04-01 19:15:20
字体:
来源:转载
供稿:网友

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了;

myhash.go

 

 
  1. /** 
  2. * Created with IntelliJ IDEA. 
  3. * User: liaojie 
  4. * Date: 12-9-8 
  5. * Time: 下午3:53 
  6. * To change this template use File | Settings | File Templates. 
  7. */ 
  8. package main 
  9. import ( 
  10. "crypto/md5" 
  11. "crypto/sha1" 
  12. "crypto/sha256" 
  13. "crypto/sha512" 
  14. "flag" //命令行选项解析器 
  15. "fmt" 
  16. "hash" 
  17. "io" 
  18. "os" 
  19. var style = flag.String("s""sha256""采用的哈西函数:sha1,sha256"
  20. var filename = flag.String("f""""需要计算散列值的文件名"
  21. func main() { 
  22. flag.Parse() 
  23. var hs hash.Hash 
  24. switch *style { 
  25. case "md5"
  26. hs = md5.New() 
  27. case "sha1"
  28. hs = sha1.New() 
  29. case "sha512"
  30. hs = sha512.New() 
  31. default
  32. hs = sha256.New() 
  33. if len(*filename) == 0 { 
  34. filein, err := os.Open(flag.Args()[len(flag.Args())-1]) 
  35. if err != nil { 
  36. return 
  37. else { 
  38. io.Copy(hs, filein) 
  39. else { 
  40. filein, err := os.Open(*filename) 
  41. if err != nil { 
  42. return 
  43. else { 
  44. io.Copy(hs, filein) 
  45. hashString := hs.Sum(nil) 
  46. fmt.Printf("%x/n", hashString) 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表