Go语言使用 RIPEMD160 生成散列值
RIPEMD(RACE原始完整性校验讯息摘要)是一种加密哈希函数,由鲁汶大学的 Hans Dobbertin,Antoon Bosselaers 和 Bart Prenee 组成的 COSIC 研究小组发布于1996 年。 RIPEMD 是以 MD4 为基础原则所设计的 ,而且其表现与更有名的 SHA-1 类似。
RIPEMD-160 是以原始版 RIPEMD 所改进的 160 位元版本,而且是 RIPEMD 系列中最常见的版本。 RIPEMD-160 是设计给学术社群所使用的,刚好相对于国家安全局 所设计 SHA-1 和 SHA-2 算法。 另一方面,RIPEMD-160 比 SHA-1 较少使用,所以可能造成 RIPEMD-160 比 SHA 还不常被审查。另外,RIPEMD-160并没有任何专利所限制。
RIPEMD160 哈希值的输出值一般是 16 进制的字符串。而16进制字符串,每两个字符占一个字节。我们知道,一个字节是 8bit,所以使用 ripemd160 加密函数所得到的是一个 160bit 的值。
使用 go 语言生成 RIPEMD160 哈希值,需要借助于库 golang.org/x/crypto/ripemd160。
1. Go 使用 RIPEMD160
package main import ( "fmt" "golang.org/x/crypto/ripemd160" ) func main() { hasher := ripemd160.New() hasher.Write([]byte("The quick brown fox jumps over the lazy dog")) hashBytes := hasher.Sum(nil) hashString := fmt.Sprintf("%x", hashBytes) fmt.Println(hashString) }
输出结果,共 20 个字节:
37f332f68db77bd9d7edd4969571ad671cf9dd3b
比特币地址的组成: 【版本 + 公钥哈希 + 校验和】,长度为26位到34位。版本:默认0x00, 即可空白的一字节。公钥哈希:就是给公钥做哈希算法得出的结果。校验和:将 [版本 + 公钥哈希] s ...