介绍
本篇文章给大家分享的是有关一文读懂去字符串指纹,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
写项目时,有时我们需要缓存,缓存就会需要唯一的关键。常规是对字符串求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以上就是一文读懂去字符串指纹,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
一文读懂去字符串指纹