Go 字符串指纹


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

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

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

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

golang实现md5
//md5值funcMd5Str(sstring)string{hash:=([]byte(s))(hash[:])}
sha1
//散列值funcSha1Str(sstring)string{r:=([]byte(s))(r[:])}
crc32
//Stringhashesastringtoauniquehashcode.//(sstring)int{v:=int(([]byte(s)))ifv=0{returnv}if-v=0{return-v}//v==MinIntreturn0}//(strings[]string)string{_,s:=rangestrings{(("%s-",s))}("%d",HashCode(()))}
使用
funcmain(){//2713056744//1f8689c0dd07ce42757ac01b1ea714f9//9addcbc6fee9c06f43d7110b657f3c61ff707032txt:=""(HashCode(txt))(Md5Str(txt))(Sha1Str(txt))}
效率

得出效率:hash_codemd5sha1

const(Txt="")//=.-(b*){fori:=0;;i++{Md5Str(Txt)}}funcBenchmarkHashCode(b*){fori:=0;;i++{HashCode(Txt)}}funcBenchmarkSha1Str(b*){fori:=0;;i++{Sha1Str(Txt)}}//BenchmarkMd5Str-82148428518ns/op144B/op3allocs/op//BenchmarkHashCode-88105571160ns/op80B/op1allocs/op//BenchmarkSha1Str-81836854700ns/op176B/op3allocs/op//得出效率:hash_codemd5sha1

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐