Go入门指南系列-XII-XII-Go 中的密码学
通过网络传输的数据必须加密,以防止被 hacker(黑客)读取或篡改,并且保证发出的数据和收到的数据检验和一致。
鉴于 Go 母公司的业务,我们毫不惊讶地看到 Go 的标准库为该领域提供了超过 30 个的包:
hash
包:实现了adler32
、crc32
、crc64
和fnv
校验;crypto
包:实现了其它的 hash 算法,比如md4
、md5
、sha1
等。以及完整地实现了aes
、blowfish
、rc4
、rsa
、xtea
等加密算法。
下面的示例用 sha1
和 md5
计算并输出了一些校验值。
示例 12.20 hash_sha1.go:
1 | // hash_sha1.go |
输出:
1 | Result: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 |
通过调用 sha1.New()
创建了一个新的 hash.Hash
对象,用来计算 SHA1 校验值。Hash
类型实际上是一个接口,它实现了 io.Writer
接口:
1 | type Hash interface { |
通过 io.WriteString
或 hasher.Write
将给定的 []byte
附加到当前的 hash.Hash
对象中。
练习 12.9:hash_md5.go:
在示例 12.20 中检验 md5 算法。
链接
- 目录
- 上一节:用 Gob 传输数据
- 下一章:错误处理与测试