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 ...