五、自助客户端签名

五、自助客户端签名 #

#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);