五、自助客户端签名 #
#lfeng/wellplay/能力综述/账户集成
在调用WellplaySDK的时候,需要在提交特定请求时使用APPSecret对请求内容进行签名,如果开发者不希望将APPSecret存放在客户端的话,可以在SDK回调时自行对返回的明文(SDK已拼接好,不需要额外处理)进行签名。
签名采用HMAC-SHA512算法,使用APPSecret对明文签名,并采用HEX小写(即十六进制)对结果进行编码。
例子 #
1、假设获得的明文data为:
123456:aaabbbcccddd:hello:1245
2、假设当前的APPSecret为:
LgWusGafKMaPcJxcsuKXnSNC5vP8AdcZ
3、则使用HEX小写编码后的签名结果为:
6acea673b622775d9a5f04c68df09f251e6723a5b5f9588dce6f05377767770b541f667a540132354b6d8573be812581f741b5c281242cb64b697ea517ef6750
参考代码 #
Go #
import (
"crypto/hmac"
"crypto/sha512"
"encoding/hex"
"fmt"
"testing"
)
func Demo(){
src := "123456:aaabbbcccddd:hello:1245"
sec := "LgWusGafKMaPcJxcsuKXnSNC5vP8AdcZ"
h := hmac.New(sha512.New, []byte(sec))
h.Write([]byte(src))
sig := h.Sum(nil)
sigStr := hex.EncodeToString(sig)
fmt.Println(sigStr)
}
Javascript #
Javascript基于brix/crypto-js实现,引包过程略。
var src = "123456:aaabbbcccddd:hello:1245";
var sec = "LgWusGafKMaPcJxcsuKXnSNC5vP8AdcZ";
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA512, sec);
hmac.update(src);
var sig = hmac.finalize();
var sigStr = CryptoJS.enc.Hex.stringify(sig);
console.info(sigStr);