Go 利用原生crypto实现md5计算方法
crypto包搜集了常用的密码(算法)常量。
使用不同的hash 算法导入不同的包
const (
MD4 Hash = 1 + iota // import golang.org/x/crypto/md4
MD5 // import crypto/md5
SHA1 // import crypto/sha1
SHA224 // import crypto/sha256
SHA256 // import crypto/sha256
SHA384 // import crypto/sha512
SHA512 // import crypto/sha512
MD5SHA1 // no implementation; MD5+SHA1 used for TLS RSA
RIPEMD160 // import golang.org/x/crypto/ripemd160
SHA3_224 // import golang.org/x/crypto/sha3
SHA3_256 // import golang.org/x/crypto/sha3
SHA3_384 // import golang.org/x/crypto/sha3
SHA3_512 // import golang.org/x/crypto/sha3
SHA512_224 // import crypto/sha512
SHA512_256 // import crypto/sha512
BLAKE2s_256 // import golang.org/x/crypto/blake2s
BLAKE2b_256 // import golang.org/x/crypto/blake2b
BLAKE2b_384 // import golang.org/x/crypto/blake2b
BLAKE2b_512 // import golang.org/x/crypto/blake2b
)
crypto实现md5的示例
package main
import (
"crypto/md5"
"fmt"
"io"
)
func main() {
fmt.Println("go-crypto/md5 demo.")
str := "https://const.net.cn"
data := []byte(str)
has := md5.Sum(data)
md5str1 := fmt.Sprintf("%x", has)
fmt.Println(md5str1)
str1 := "https://"
str2 := "const.net.cn"
w := md5.New()
io.WriteString(w, str1)
io.WriteString(w, str2)
md5str2 := fmt.Sprintf("%x", w.Sum(nil))
fmt.Println(md5str2)
}
输出:
go run .
go-crypto/md5 demo.
682d2c63236af6e721794b2988fc1d44
682d2c63236af6e721794b2988fc1d44
echo -n "https://const.net.cn" | md5sum
682d2c63236af6e721794b2988fc1d44 -
echo -n "https://const.net.cn" | openssl dgst -md5
(stdin)= 682d2c63236af6e721794b2988fc1d44
本文链接地址:https://const.net.cn/44.html