sydomain

思绪来的快,去的也快,偶尔在这里停留。

hmac-sha256加密

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值的转换!


Powered By sydomain

Copyright Your WebSite.Some Rights Reserved.