by Anish
Posted on Wednesday October 31 , 2018
This sample chapter extracted from the book, Go Lang Cryptography for Developers . The Book theme isCryptography is for EveryOne. Learn from Crypto Principle to Applied Cryptography With Practical Example
A cryptographic hash function is a hash function which takes an input (or 'message') and returns a fixed-size alphanumeric string. The string is called the 'hash value', 'message digest', 'digital fingerprint', 'digest' or 'checksum'.
The ideal hash function has three main properties:
Go
provides built-in support for hash algorithms, supported Hashing Algorithms and their Digest Sizes
Hash | Digest Size |
---|---|
MD4 | 16 |
MD5 | 16 |
SHA1 | 20 |
SHA224 | 28 |
SHA256 | 32 |
SHA384 | 48 |
SHA512 | 64 |
RIPEMD160 | 20 |
SHA3_224 | 28 |
SHA3_256 | 32 |
SHA3_384 | 48 |
SHA3_512 | 64 |
SHA512_224 | 28 |
SHA512_256 | 32 |
BLAKE2s_256 | 32 |
BLAKE2b_256 | 32 |
BLAKE2b_384 | 48 |
BLAKE2b_512 | 64 |
type Hash
: Hash identifies a cryptographic hash function that is implemented in another package
MD4 // import 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
SHA-1 Hashing Example
package main
import "crypto/sha1"
import "fmt"
func main() {
s := "Hello 8gwifi.org"
// 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()
// `Write` expects bytes. If you have a string `s`,
// use `[]byte(s)` to coerce it to bytes.
h.Write([]byte(s))
// This gets the finalized hash result as a byte
// slice. The argument to `Sum` can be used to append
// to an existing byte slice: it usually isn't needed.
bs := h.Sum(nil)
// SHA1 values are often printed in hex, for example
// in git commits. Use the `%x` format verb to convert
// a hash results to a hex string.
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
The output
Hello 8gwifi.org
5523bdf845330363e738519c87f5f0dafe72c051
MD5 Hashing Example
package main
import "crypto/md5"
import "fmt"
func main() {
s := "Hello 8gwifi.org"
// The pattern for generating a hash is `sha1.New()`,
// `sha1.Write(bytes)`, then `sha1.Sum([]byte{})`.
// Here we start with a new hash.
h := md5.New()
// `Write` expects bytes. If you have a string `s`,
// use `[]byte(s)` to coerce it to bytes.
h.Write([]byte(s))
// This gets the finalized hash result as a byte
// slice. The argument to `Sum` can be used to append
// to an existing byte slice: it usually isn't needed.
bs := h.Sum(nil)
// MD5 values are often printed in hex, for example
// in git commits. Use the `%x` format verb to convert
// a hash results to a hex string.
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
The output
Hello 8gwifi.org
5d567716bc513834a40ecf179fcab1ba
Thanku for reading !!! Give a Share for Support
Asking for donation sound bad to me, so i'm raising fund from by offering all my Nine book for just $9