一文读懂去字符串指纹

  介绍

本篇文章给大家分享的是有关一文读懂去字符串指纹,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

写项目时,有时我们需要缓存,缓存就会需要唯一的关键。常规是对字符串求md5指纹。在golang里我们也可以使用,目前可以计算一个字符串的crc32、md5、sha1的指纹。

md5:一种被广泛使用的密码散列函数,可以产白生出一个128位(du16字节)的散列值(散列值),用于确保信息传输完整一之致.MD5由美国密码学家罗纳德·李维斯特(罗纳德·林恩莱维斯特)设计,于1992年公开,用以取代MD4算法。

sha1: sha1是由NISTNSA设计为同DSA一起使用的,它对长度小于264年的输入,产生长度为160位的散列值,因此抗穷举(强力)性更好.SHA-1基于md5, md5又基于MD4。

crc32:本身是“冗余校验码”的意思,crc32则表示会产生一个32位(8位十六进制数)的校验值。由于crc32产生校验值时源数据块的每一个比特(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的crc32值。


<强> md5

//md5值
  func Md5Str字符串(字符串){
  散列:=md5.Sum([]字节(s))
  返回hex.EncodeToString(散列[:])
  }

<>强sha1

//散列值
  func Sha1Str字符串(字符串){
  r:=sha1.Sum([]字节(s))
  返回hex.EncodeToString (r [:])
  }

<>强crc32

//独特的hashcode字符串哈希字符串。//https://github.com/hashicorp/terraform/blob/master/helper/hashcode/hashcode.go//crc32返回uint32,但我们用我们所需要的//和非负整数。在这里我们把一个整数//反转,如果结果是负的。
  func HashCode(字符串)int {
  v:=int (crc32.ChecksumIEEE([]字节(s)))
  如果v祝辞=0 {
  返回v
  }
  如果- v祝辞=0 {
  返回- v
  }//v==MinInt
  返回0
  }//字符串哈希字符串列表一个独特的hashcode。
  字符串函数hashcode (string[]字符串){
  var buf bytes.Buffer
  
  _,年代:={范围字符串
  buf.WriteString (fmt.Sprintf (“% s产生绯闻,s))
  }
  
  返回fmt.Sprintf (“% d", HashCode (buf.String ()))
  }

<强>使用

函数main () {//2713056744//1 f8689c0dd07ce42757ac01b1ea714f9//9 addcbc6fee9c06f43d7110b657f3c61ff707032
  txt:=癶ttps://github.com/hashicorp/terraform/blob/master/helper/hashcode/hashcode.go"
  fmt.Println (HashCode (txt))
  fmt.Println (Md5Str (txt))
  fmt.Println (Sha1Str (txt))
  }

<>强效率

得出效率:hash_code祝辞md5祝辞sha1

常量(
  Txt=癶ttps://github.com/hashicorp/terraform/blob/master/helper/hashcode/hashcode.go"
  )//测试-test.bench=?test.benchmem
  func BenchmarkMd5Str (b * testing.B) {
  我:=0;我& lt;b.N;我+ + {
  Md5Str (Txt)
  }
  }
  func BenchmarkHashCode (b * testing.B) {
  我:=0;我& lt;b.N;我+ + {
  HashCode (Txt)
  }
  }
  func BenchmarkSha1Str (b * testing.B) {
  我:=0;我& lt;b.N;我+ + {
  Sha1Str (Txt)
  }
  }//BenchmarkMd5Str-8 2148428 518 ns/op 144 B/op 3 alloc/op//BenchmarkHashCode-8 8105571 160 ns/op 80 B/op 1 alloc/op//BenchmarkSha1Str-8 1836854 700 ns/op 176 B/op 3 alloc/op//得出效率:hash_code比;md5祝辞sha1 

以上就是一文读懂去字符串指纹,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

一文读懂去字符串指纹