sha1 hashes

This commit is contained in:
Mark McGranaghan 2012-10-10 09:27:40 -07:00
parent 8a242de78d
commit 68661d5488
3 changed files with 36 additions and 15 deletions

View File

@ -56,7 +56,7 @@ Sorting by Functions
# Random Numbers # Random Numbers
# Number Parsing # Number Parsing
# URLs # URLs
# SHA1 Hashes SHA1 Hashes
# Base64 Encoding # Base64 Encoding
# Reading Files # Reading Files
# Writing Files # Writing Files

View File

@ -1,28 +1,37 @@
// SHA1 hashes are frequently used to compute short
// identities for binary or text blobs. For example, the
// [git revision control system](http://git-scm.com/) uses
// SHA1s extensively to identify versioned files and
// directories. Here's how to compute SHA1 hashes in Go.
package main package main
// Package `crypto/sha1` computes SHA1 hashes. // Go implements several hash functions in various
// `crtypo/*` packages.
import "crypto/sha1" import "crypto/sha1"
import "encoding/hex" import "encoding/hex"
import "fmt" import "fmt"
func main() { func main() {
// The pattern is `sha1.New()`, `sha1.Write(bytes)`, s := "sha1 this string"
// then `sha1.Sum([]byte{})
// The pattern for generating a hash is `sha1.New()`,
// `sha1.Write(bytes)`, then `sha1.Sum([]byte{}).
// Here we start with a new hash.
h := sha1.New() h := sha1.New()
// `Write` expects bytes. If you have a string `s` // `Write` expects bytes. If you have a string `s`,
// use `[]byte(s)` to coerce it. // use `[]byte(s)` to coerce it to bytes.
h.Write([]byte("sha1 this string")) h.Write([]byte(s))
// Get the result. The argument to `Sum` can be used // This gets the finalized hash result as a byte
// to append to an existing buffer: usually uneeded. // slice. The argument to `Sum` can be used to append
// to an existing byte slice: it usually isn't needed.
bs := h.Sum(nil) bs := h.Sum(nil)
// SHA1 values are often printed in hex, for example // SHA1 values are often printed in hex, for example
// with git. // in git commits. Use `hex.EncodeToString` to convert
// a hash results to a hex string.
fmt.Println(s)
fmt.Println(hex.EncodeToString(bs)) fmt.Println(hex.EncodeToString(bs))
} }
// You can compute other hashes using a similar
// pattern. For exmpale, to compute MD5 hashes
// import `crypto/md5` and use `md5.New()`.

View File

@ -1,2 +1,14 @@
$ go run sha1-hashes.go # Running the program computes the hash and prints it in
# a human-readable hex format.
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94 cf23df2207d99a74fbe169e3eba035e633b65d94
# You can compute other hashes using a similar pattern to
# the one shown above. For exmpale, to compute MD5 hashes
# import `crypto/md5` and use `md5.New()`.
# Note that if you need cyrtograhpically secure hashes,
# you should carefully research
# [hash strength](http://en.wikipedia.org/wiki/Cryptographic_hash_function)!