hmac-sha256与 sha256 是一样的加密方法,只是用hmac-256方便带入密钥
加密方法
使用 hmac方法进行加密,加密后返回二进制编码,类型是[]byte:
//密钥 secret := "123456" //要加密的内容 content := "abcde" //开始加密 h := hmac.New(sha256.New,[]byte(secret)) h.Write([]byte(content) ) hmacContent := h.Sum(nil)
如果需要转成十六进制,则使用hex.EncodeToString 方法
//转十六进制 hmacContent := hex.EncodeToString(hmacContent)
补充
php有个处理 hmac-sha256的方法是hash_hmac,共4个参数,第1个是指定的加密方式,第2个是要加密的内容,第3个是密钥,第4个是选填项:代表是否返回二进制,传递布尔值
//密钥 $secret = "123456"; //要加密的内容 $content = "abcde”; //开始加密 hash_hmac('sha256',$content,$secret);
如果最后一个参数不传true,相当于golang中加入了hex.EncodeToString
完整代码如下:
package api import( "strings" "strconv" ) func hash2bin(hash string)(string,int,error){ binary_string := "" for _, char := range hash{ char_hex,err:= strconv.ParseInt(string(char),16,8) if err!=nil{ return "",0,err } char_bin :="" for ; char_hex > 0; char_hex /=2{ b := char_hex % 2 char_bin = strconv.Itoa(int(b))+char_bin } fill := 4-len(char_bin) for fill>0{ char_bin = "0" + char_bin fill -= 1 } binary_string += char_bin } return binary_string,len(binary_string),nil }
该函数只支持16进制形式的HASH值的转换!