https://github.com/deatil/go-hash
go 常用摘要 Hash 算法库 / go hash functions (MD2/MD4/MD5/Hmac/Ripemd160/SHA1/SHA3/SHA256/SM3/kupyna/XXHash/SipHash/Blake3)
https://github.com/deatil/go-hash
go hash hmac kupyna md2 md4 md5 sha sha1 sha256 sha3 xxh3
Last synced: about 1 year ago
JSON representation
go 常用摘要 Hash 算法库 / go hash functions (MD2/MD4/MD5/Hmac/Ripemd160/SHA1/SHA3/SHA256/SM3/kupyna/XXHash/SipHash/Blake3)
- Host: GitHub
- URL: https://github.com/deatil/go-hash
- Owner: deatil
- License: apache-2.0
- Created: 2022-04-03T03:28:28.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-02-08T15:44:18.000Z (over 1 year ago)
- Last Synced: 2025-03-17T22:08:30.610Z (over 1 year ago)
- Topics: go, hash, hmac, kupyna, md2, md4, md5, sha, sha1, sha256, sha3, xxh3
- Language: Go
- Homepage: https://pkg.go.dev/github.com/deatil/go-hash
- Size: 1.32 MB
- Stars: 15
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## go-hash
[中文](README_CN.md) | English
### Desc
* A Go package that get data digest hash
* hashs has some MD2/MD4/MD5/Hmac/Ripemd160/SHA1/SHA3/SHA256/SM3/Xxhash/Gost etc
### Download
~~~go
go get -u github.com/deatil/go-hash
~~~
### Get Starting
~~~go
package main
import (
"fmt"
"github.com/deatil/go-hash/hash"
)
func main() {
var data string = "..."
// MD5 hash
var md5String string = hash.
FromString(data). // input data
MD5(). // hash type
ToHexString() // output data
// NewMD5 hash
var md5String string = hash.
Hashing().
NewMD5(). // new hash type
Write([]byte(data)). // write data
Sum(nil). // sum
ToHexString() // output data
// =============
var pass []byte = []byte("...")
// HmacSHA1 获取摘要
var hmacMD5String string = hash.
FromString(data). // input data
Hmac(hash.HmacSHA1.New, pass). // hash type
ToHexString() // output data
// HmacSHA1 获取摘要
var hmacMD5String string = hash.
Hashing(). // input data
NewHmac(hash.HmacSHA1.New, pass). // hash type
Write([]byte(data)). // write data
Sum(nil). // sum
ToHexString() // output data
}
~~~
### Input and Output
* Input:
`FromBytes(data []byte)`, `FromString(data string)`, `FromBase64String(data string)`, `FromHexString(data string)`, `FromReader(reader io.Reader)`
* Output:
`String() string`, `ToBytes() []byte`, `ToString() string`, `ToBase64String() string`, `ToHexString() string`, `ToReader() io.Reader`
### Hash Types
* Types:
`Adler32()`,
`Blake2b_256()`, `Blake2b_384()`, `Blake2b_512()`, `Blake2s_256()`, `Blake2s_128()`,
`CRC16_X25()`, `CRC16_Modbus()`,
`CRC32_IEEE()`, `CRC32_Castagnoli()`, `CRC32_Koopman()`,
`CRC64_ISO()`, `CRC64_ECMA()`,
`Fnv32()`, `Fnv32a()`, `Fnv64()`, `Fnv64a()`, `Fnv128()`, `Fnv128a()`,
`Hmac(h func() hash.Hash, secret []byte)`,
`Keccak256()`, `Keccak512()`,
`Maphash()`,
`MD2()`, `MD4()`, `MD5()`, `MD5SHA1()`,
`Murmur32()`, `Murmur32WithSeed(seed uint32)`,
`Murmur64()`, `Murmur64WithSeed(seed uint32)`,
`Murmur128()`, `Murmur128WithSeed(seed uint32)`,
`Ripemd160()`,
`SHA1()`, `SHA224()`, `SHA256()`, `SHA384()`, `SHA512()`, `SHA512_224()`, `SHA512_256()`,
`SHA3_224()`, `SHA3_256()`, `SHA3_384()`, `SHA3_512()`,
`Shake128()`, `Shake256()`,
`SM3()`, `Xxhash()`, `Gost34112012256()`, `Gost34112012512()`, `HAS160()`, `LSH256()`, `LSH256_224()`, `LSH512()`, `LSH512_384()`, `LSH512_256()`, `LSH512_224()`, `Siphash64()`, `Siphash128()`, `Tiger()`, `Whirlpool()`
* New Types:
`NewAdler32()`,
`NewBlake2b_256(key []byte)`, `NewBlake2b_384(key []byte)`, `NewBlake2b_512(key []byte)`, `NewBlake2s_256(key []byte)`, `NewBlake2s_128(key []byte)`,
`NewCRC32_IEEE()`, `NewCRC32_Castagnoli()`, `NewCRC32_Koopman()`,
`NewCRC64_ISO()`, `NewCRC64_ECMA()`,
`NewFnv32()`, `NewFnv32a()`, `NewFnv64()`, `NewFnv64a()`, `NewFnv128()`, `NewFnv128a()`,
`NewHmac(h func() hash.Hash, secret []byte)`,
`NewKeccak256()`, `NewKeccak512()`,
`NewMaphash()`,
`NewMD2()`, `NewMD4()`, `NewMD5()`,
`NewMurmur32()`, `NewMurmur32WithSeed(seed uint32)`,
`NewMurmur64()`, `NewMurmur64WithSeed(seed uint32)`,
`NewMurmur128()`, `NewMurmur128WithSeed(seed uint32)`,
`NewRipemd160()`,
`NewSHA1()`, `NewSHA224()`, `NewSHA256()`, `NewSHA384()`, `NewSHA512()`, `NewSHA512_224()`, `NewSHA512_256()`,
`NewSHA3_224()`, `NewSHA3_256()`, `NewSHA3_384()`, `NewSHA3_512()`,
`NewSM3()`, `NewXxhash()`, `NewGost34112012256()`, `NewGost34112012512()`, `NewHAS160()`, `NewLSH256()`, `NewLSH256_224()`, `NewLSH512()`, `NewLSH512_384()`, `NewLSH512_256()`, `NewLSH512_224()`, `NewSiphash64()`, `NewSiphash128()`, `NewTiger()`, `NewWhirlpool()`
* Hmac hashs:
`HmacADLER32`, `HmacMD2`, `HmacMD4`, `HmacMD5`, `HmacSHA1`, `HmacSHA224`, `HmacSHA256`, `HmacSHA384`, `HmacSHA512`, `HmacSHA512_224`, `HmacSHA512_256`, `HmacRIPEMD160`, `HmacSHA3_224`, `HmacSHA3_256`, `HmacSHA3_384`, `HmacSHA3_512`
### LICENSE
* The library LICENSE is `Apache2`, using the library need keep the LICENSE.
### Copyright
* Copyright deatil(https://github.com/deatil).