Go计算MD5和SHA1
2017-05-23 08:30
351 查看
Go的crypto包中提供了丰富的加密工具,可以计算 MD5、SHA1、SHA256 等等,他们分别在包 crypto/md5、crypto/sha1、crypto/sha256 中。每一种算法提供的接口都大致相同,如下所示(仅列出重要部分):
一个完整的例子:
// 创建一个Hash对象,用于计算相应的加密值 func New() hash.Hash // 计算 data 的加密值,Size是一个常量,用于表示加密值的长度,MD5为16,SHA1为20 func Sum(data []byte) [Size]byte // 在hash包中,提供了如下的Hash结构体: type Hash interface { // 通过内嵌 io.Writer 字段提供 io.Writer 接口 io.Writer // 将b表示的字节切片加入当前的hash中,返回计算结果 Sum(b []byte) []byte // ... } // 下面的例子中还用到了hex中的一个转换函数: // 将src表示的16进制切片转换成字符串 func EncodeToString(src []byte) string
一个完整的例子:
package main import ( "crypto/md5" "crypto/sha1" "encoding/hex" "fmt" "io" "log" "os" ) func md5s(s string) string { r := md5.Sum([]byte(s)) return hex.EncodeToString(r[:]) } func md5f(fName string) string { f, e := os.Open(fName) if e != nil { log.Fatal(e) } h := md5.New() _, e = io.Copy(h, f) if e != nil { log.Fatal(e) } return hex.EncodeToString(h.Sum(nil)) } func sha1s(s string) string { r := sha1.Sum([]byte(s)) return hex.EncodeToString(r[:]) } func sha1f(fName string) string { f, e := os.Open(fName) if e != nil { log.Fatal(e) } h := sha1.New() _, e = io.Copy(h, f) if e != nil { log.Fatal(e) } return hex.EncodeToString(h.Sum(nil)) } func main() { fmt.Println(md5s("Hello, Gopher!")) fmt.Println(md5f("E:\\testfile")) fmt.Println(sha1s("Hello, Gopher!")) fmt.Println(sha1f("E:\\testfile")) }
相关文章推荐
- 用python计算md5,sha1,crc32
- linux计算文件的MD5 与 SHA1
- Linux快速计算MD5和Sha1命令
- 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
- 【Python】计算文件MD5 和 SHA1
- Linux上计算MD5和SHA1
- 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
- 文件 MD5、SHA1、SHA256 计算
- Go语言中三种不同md5计算方式的性能比较
- 用python计算md5,sha1,crc32
- iOS SDK计算SHA1和MD5
- JAVA计算文件的MD5及SHA1等值
- 用python计算md5,sha1,crc32
- 如何计算文件MD5 sha1 -- 微软MD5/SHA1 校验工具 Microsoft File Checksum Integrity Verifier
- VB6下利用API计算MD2 MD4 MD5 SHA1
- Linux计算字符串md5/sha1
- Android计算文件的MD5和SHA1
- 个人代码库のC#计算MD5和SHA1
- 小巧好用的哈希计算器,支持文件拖放,速度很快,可以计算文件的 MD5、SHA1、CRC32 的值。
- Java计算字符串和文件的MD5与SHA1