GoLang hash_hmac

is this article helpful? yes | no
GoLang replacement for PHP's hash_hmac [edit | history]
<?php
function genHMAC256() {
    $s = hash_hmac('sha256', 'Message', 'secret', true);
    echo base64_encode($s);
}
?>


import (
    b64 "encoding/base64"
    "crypto/hmac"
    "crypto/sha256"
)

//genHMAC256 generates a hash signature
func genHMAC256(ciphertext, key []byte) []byte {
	mac := hmac.New(sha256.New, key)
	mac.Write([]byte(ciphertext))
	hmac := mac.Sum(nil)
	return hmac
}


...
//call the function
hmac := genHMAC256([]byte('Message'), []byte('secret'))
stringHmac := b64.StdEncoding.EncodeToString(hmac)
...

PHP hash_hmac

PHP original manual for hash_hmac [ show | php.net ]

hash_hmac

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_hmacGenerate a keyed hash value using the HMAC method

Description

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = FALSE ] )

Parameters

algo

Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) See hash_hmac_algos() for a list of supported algorithms.

data

Message to be hashed.

key

Shared secret key used for generating the HMAC variant of the message digest.

raw_output

When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.

Return Values

Returns a string containing the calculated message digest as lowercase hexits unless raw_output is set to true in which case the raw binary representation of the message digest is returned. Returns FALSE when algo is unknown or is a non-cryptographic hash function.

Changelog

Version Description
7.2.0 Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.

Examples

Example #1 hash_hmac() example

<?php
echo hash_hmac('ripemd160''The quick brown fox jumped over the lazy dog.''secret');
?>

The above example will output:

b8e7ae12510bdfb1812e463a7f086122cf37e4f7

See Also

  • hash() - Generate a hash value (message digest)
  • hash_hmac_algos() - Return a list of registered hashing algorithms suitable for hash_hmac
  • hash_init() - Initialize an incremental hashing context
  • hash_hmac_file() - Generate a keyed hash value using the HMAC method and the contents of a given file