加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 19:32:28 所属栏目:大数据 来源:网络整理
导读:myhash.go /** * Created with IntelliJ IDEA. * User: liaojie * Date: 12-9-8 * Time: 下午3:53 * To change this template use File | Settings | File Templates. */package mainimport ( "crypto/md5" "crypto/sha1" "crypto/sha256" "crypto/sha512" "

myhash.go

/**
 * Created with IntelliJ IDEA.
 * User: liaojie
 * Date: 12-9-8
 * Time: 下午3:53
 * To change this template use File | Settings | File Templates.
 */
package main
import (
  "crypto/md5"
  "crypto/sha1"
  "crypto/sha256"
  "crypto/sha512"
  "flag" //命令行选项解析器
  "fmt"
  "hash"
  "io"
  "os"
)
var style = flag.String("s","sha256","采用的哈西函数:sha1,sha256")
var filename = flag.String("f","","需要计算散列值的文件名")
func main() {
  flag.Parse()
  var hs hash.Hash
  switch *style {
  case "md5":
    hs = md5.New()
  case "sha1":
    hs = sha1.New()
  case "sha512":
    hs = sha512.New()
  default:
    hs = sha256.New()
  }
  if len(*filename) == 0 {
    filein,err := os.Open(flag.Args()[len(flag.Args())-1])
    if err != nil {
      return
    } else {
      io.Copy(hs,filein)
    }
  } else {
    filein,err := os.Open(*filename)
    if err != nil {
      return
    } else {
      io.Copy(hs,filein)
    }
  }
  hashString := hs.Sum(nil)
  fmt.Printf("%xn",hashString)
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读