Skip to main content

Hashx

The hashx package provides one-line hash and HMAC functions for common algorithms.

API Reference

APIContract
hashx.MD5(data string)Converts data to bytes, calls MD5Bytes, and returns a 32-character lowercase hex MD5 digest
hashx.MD5Bytes(data []byte)Hashes raw bytes with crypto/md5 and returns a 32-character lowercase hex digest
hashx.SHA1(data string)Converts data to bytes, calls SHA1Bytes, and returns a 40-character lowercase hex SHA-1 digest
hashx.SHA1Bytes(data []byte)Hashes raw bytes with crypto/sha1 and returns a 40-character lowercase hex digest
hashx.SHA256(data string)Converts data to bytes, calls SHA256Bytes, and returns a 64-character lowercase hex SHA-256 digest
hashx.SHA256Bytes(data []byte)Hashes raw bytes with crypto/sha256 and returns a 64-character lowercase hex digest
hashx.SHA512(data string)Converts data to bytes, calls SHA512Bytes, and returns a 128-character lowercase hex SHA-512 digest
hashx.SHA512Bytes(data []byte)Hashes raw bytes with crypto/sha512 and returns a 128-character lowercase hex digest
hashx.SM3(data string)Converts data to bytes, calls SM3Bytes, and returns a 64-character lowercase hex SM3 digest
hashx.SM3Bytes(data []byte)Hashes raw bytes with github.com/tjfoc/gmsm/sm3 and returns a 64-character lowercase hex digest
hashx.HmacMD5(key, data []byte)Computes HMAC-MD5 with key and data, returning a 32-character lowercase hex digest
hashx.HmacSHA1(key, data []byte)Computes HMAC-SHA1 with key and data, returning a 40-character lowercase hex digest
hashx.HmacSHA256(key, data []byte)Computes HMAC-SHA256 with key and data, returning a 64-character lowercase hex digest
hashx.HmacSHA512(key, data []byte)Computes HMAC-SHA512 with key and data, returning a 128-character lowercase hex digest
hashx.HmacSM3(key, data []byte)Computes HMAC-SM3 with key and data, returning a 64-character lowercase hex digest

Hash Functions

String hash functions accept a string, convert it with []byte(data), and return a lowercase hex-encoded digest:

import "github.com/coldsmirk/vef-framework-go/hashx"

hashx.MD5("hello") // "5d41402abc4b2a76b9719d911017c592"
hashx.SHA1("hello") // "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
hashx.SHA256("hello") // "2cf24dba5fb0a30e26e83b2ac5b9e29e..."
hashx.SHA512("hello") // "9b71d224bd62f3785d96d46ad3ea3d73..."
hashx.SM3("hello") // SM3 (Chinese National Standard)

Byte Variants

For raw byte input, use the Bytes variants. They return the digest of the byte slice exactly as passed; a nil slice is accepted and hashes like an empty slice.

hashx.MD5Bytes(data)
hashx.SHA1Bytes(data)
hashx.SHA256Bytes(data)
hashx.SHA512Bytes(data)
hashx.SM3Bytes(data)

HMAC Functions

All HMAC functions accept key and data as byte slices and return lowercase hex-encoded MACs:

key := []byte("secret")
data := []byte("message")

hashx.HmacMD5(key, data)
hashx.HmacSHA1(key, data)
hashx.HmacSHA256(key, data)
hashx.HmacSHA512(key, data)
hashx.HmacSM3(key, data) // HMAC with SM3 (Chinese National Standard)

Algorithm Reference

FunctionAlgorithmOutput Length
MD5, MD5Bytes, HmacMD5MD5 / HMAC-MD532 hex chars
SHA1, SHA1Bytes, HmacSHA1SHA-1 / HMAC-SHA140 hex chars
SHA256, SHA256Bytes, HmacSHA256SHA-256 / HMAC-SHA25664 hex chars
SHA512, SHA512Bytes, HmacSHA512SHA-512 / HMAC-SHA512128 hex chars
SM3, SM3Bytes, HmacSM3SM3 / HMAC-SM3 (Chinese National Standard)64 hex chars
caution

MD5 and SHA1 are kept for compatibility checksums and legacy integrations. Do not use them for password storage; use the password package instead.