标签 crypto 下的文章

“”

RIPEMD-160是以原始版RIPEMD所改进的160位元版本,而且是RIPEMD系列中最常见的版本。 RIPEMD-160是設計給学术社群所使用的,剛好相对于国家安全局所设计SHA-1 和SHA-2 算法。

package main

import (
    "fmt"
    "io"

    "golang.org/x/crypto/ripemd160"
)

func main() {
    fmt.Println("go crypto ripemd160 demo.")
    str1 := "https://const.net.cn"
    str2 := "/"
    w := ripemd160.New()
    io.WriteString(w, str1)
    io.WriteString(w, str2)

    hashstr := fmt.Sprintf("ripemd160 = %x", w.Sum(nil))
    fmt.Println(hashstr)
}

输出:

go run .
go crypto ripemd160 demo.
ripemd160 = 9e5801b91909e1c129f7b2429c968bb932f6f3e1
echo -n "https://const.net.cn/" | openssl dgst -ripemd160
(stdin)= 9e5801b91909e1c129f7b2429c968bb932f6f3e1

SHA-3第三代安全散列算法(Secure Hash Algorithm 3),之前名为Keccak算法,设计者宣称在 Intel Core 2 的CPU上面,此算法的性能是12.6比特每时钟周期(cycles per byte)。
SHA-3 在2015年8月5日由 NIST 通过 FIPS 202 正式发表。

package main

import (
    "fmt"
    "io"

    "golang.org/x/crypto/sha3"
)

func main() {
    fmt.Println("go crypto sha3_224 demo.")
    str1 := "https://const.net.cn"
    str2 := "/"
    w := sha3.New224()
    io.WriteString(w, str1)
    io.WriteString(w, str2)

    hashstr := fmt.Sprintf("sha3_224 = %x", w.Sum(nil))
    fmt.Println(hashstr)
}

go run .
go crypto sha3_224 demo.
sha3_224 = e328606cc1eb2999a2d3f959883c78d6fe4d24d0701eda4d052393ec
echo -n "https://const.net.cn/" | openssl dgst -sha3-224
(stdin)= e328606cc1eb2999a2d3f959883c78d6fe4d24d0701eda4d052393ec

BLAKE和BLAKE2是基于丹尼尔·J·伯恩斯坦ChaCha流密码的密码散列函数。与SHA-2一样,有两种不同字大小的变体。BLAKE-256和BLAKE-224使用32位字,分别产生256位和224位的摘要大小,而BLAKE-512和BLAKE-384分别使用64位字,产生512位和384位的摘要大小。在64位的x64和ARM体系结构上运行时,BLAKE2b比SHA-3,SHA-2,SHA-1和MD5更快。BLAKE2的安全性提供类似于SHA-3,优于SHA-2:免疫长度扩展攻击,来自随机预言机的无差异性等。BLAKE的改进版本BLAKE2于2012年12月21日宣布推出。BLAKE3于2020年1月9日宣布推出。

代码:

package main

import (
    "fmt"

    "golang.org/x/crypto/blake2s"
)

func main() {
    fmt.Println("go crypto blake2s_256 demo.")
    str1 := "https://const.net.cn/"
    w := blake2s.Sum256([]byte(str1))

    hashstr := fmt.Sprintf("blake2s_256 = %x ,blake2s_256 len = %d", w, len(w))
    fmt.Println(hashstr)
}

输出:

go run .
go crypto blake2s_256 demo.
blake2s_256 = 5d91ecdf175b8f81bf3cd76c96f7fa1174d4cba8f4bcfa17d183bf4b20f7cdca ,blake2s_256 len = 32
echo -n "https://const.net.cn/" | openssl dgst -blake2s256
(stdin)= 5d91ecdf175b8f81bf3cd76c96f7fa1174d4cba8f4bcfa17d183bf4b20f7cdca

BLAKE和BLAKE2是基于丹尼尔·J·伯恩斯坦ChaCha流密码的密码散列函数。与SHA-2一样,有两种不同字大小的变体。BLAKE-256和BLAKE-224使用32位字,分别产生256位和224位的摘要大小,而BLAKE-512和BLAKE-384分别使用64位字,产生512位和384位的摘要大小。在64位的x64和ARM体系结构上运行时,BLAKE2b比SHA-3,SHA-2,SHA-1和MD5更快。BLAKE2的安全性提供类似于SHA-3,优于SHA-2:免疫长度扩展攻击,来自随机预言机的无差异性等。BLAKE的改进版本BLAKE2于2012年12月21日宣布推出。BLAKE3于2020年1月9日宣布推出。
代码:

package main

import (
    "fmt"

    "golang.org/x/crypto/blake2b"
)

func main() {
    fmt.Println("go crypto blake2b_256 demo.")
    str1 := "https://const.net.cn/"
    w := blake2b.Sum256([]byte(str1))

    hashstr := fmt.Sprintf("blake2b_256 = %x ,blake2b_256 len = %d", w, len(w))
    fmt.Println(hashstr)
}

输出:

go run .
go crypto blake2b_256 demo.
blake2b_256 = 3dacddea2bb47f46eaf6bfe98ed979633cc9bc0a5ca5c451a13640ce886254a6 ,blake2b_256 len = 32

BLAKE和BLAKE2是基于丹尼尔·J·伯恩斯坦ChaCha流密码的密码散列函数。与SHA-2一样,有两种不同字大小的变体。BLAKE-256和BLAKE-224使用32位字,分别产生256位和224位的摘要大小,而BLAKE-512和BLAKE-384分别使用64位字,产生512位和384位的摘要大小。在64位的x64和ARM体系结构上运行时,BLAKE2b比SHA-3,SHA-2,SHA-1和MD5更快。BLAKE2的安全性提供类似于SHA-3,优于SHA-2:免疫长度扩展攻击,来自随机预言机的无差异性等。BLAKE的改进版本BLAKE2于2012年12月21日宣布推出。BLAKE3于2020年1月9日宣布推出。
代码:

package main

import (
    "fmt"

    "golang.org/x/crypto/blake2b"
)

func main() {
    fmt.Println("go crypto blake2b_384 demo.")
    str1 := "https://const.net.cn/"
    w := blake2b.Sum384([]byte(str1))

    hashstr := fmt.Sprintf("blake2b_384 = %x ,blake2b_384 len = %d", w, len(w))
    fmt.Println(hashstr)
}

输出:

go run .
go crypto blake2b_384 demo.
blake2b_384 = b4ff9c11ed64a0dd6bb88be552973e9a8f918d5324178e713e2f2992de920f5a2962ae7899fb78bddbab8a5c3f860a08 ,blake2b_384 len = 48