public string GenerateUserSig(string userId, int sdkAppId, string secretKey, int?expire) { var generator = new TLSSigAPIv2(sdkAppId, secretKey); if (expire.HasValue) { return(generator.GenSig(userId, expire.Value)); } else { return(generator.GenSig(userId)); } }
public void TestMethod1() { TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e"); string sig = api.GenSig("xiaojun"); System.Console.WriteLine(sig); }
/// <summary> /// 计算 UserSig 签名 /// /// 函数内部使用 HMAC-SHA256 非对称加密算法,对 SDKAPPID、userId 和 EXPIRETIME 进行加密 /// /// 该方案仅适合本地跑通demo和功能调试,产品真正上线发布,要使用服务器获取方案避免私钥被破解。 /// </summary> /// <remarks> /// 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下: /// /// 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品, /// 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。 /// 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。 /// /// 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。 /// 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。 /// /// 文档:https://cloud.tencent.com/document/product/647/17275#GetFromServer /// </remarks> public string GenTestUserSig(string userId) { TLSSigAPIv2 api = new TLSSigAPIv2(SDKAPPID, SECRETKEY); // 统一转换为UTF8,SDK内部是用UTF8编码。 return(api.GenSig(Util.UTF16To8(userId))); }
/// <summary> /// 计算 UserSig 签名 /// /// 函数内部使用 HMAC-SHA256 非对称加密算法,对 SDKAPPID、userId 和 EXPIRETIME 进行加密 /// /// 该方案仅适合本地跑通demo和功能调试,产品真正上线发布,要使用服务器获取方案避免私钥被破解。 /// </summary> /// <remarks> /// 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下: /// /// 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品, /// 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。 /// 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。 /// /// 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。 /// 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。 /// /// 文档:https://cloud.tencent.com/document/product/647/17275#GetFromServer /// </remarks> public string GenTestUserSig(string userId) { if (SDKAPPID == 0 || string.IsNullOrEmpty(SECRETKEY)) { return(null); } TLSSigAPIv2 api = new TLSSigAPIv2(SDKAPPID, SECRETKEY); // 统一转换为UTF8,SDK内部是用UTF8编码。 return(api.GenSig(Util.UTF16To8(userId))); }
private void Form1_Load(object sender, EventArgs e) { int appid = 1400350934; string key = "dde469a0a3222fe1868f4157b5ae2562fe874bd0a2408274133c9a3b65e4cca9"; var data = new { sdk_config_log_file_path = AppDomain.CurrentDomain.BaseDirectory, sdk_config_config_file_path = AppDomain.CurrentDomain.BaseDirectory }; var user_id = "10005"; TLSSigAPIv2 api = new TLSSigAPIv2(appid, key); Console.WriteLine($"init rest:{TIMClientAPIDef.TIMInit((ulong)appid, JsonConvert.SerializeObject(data))}"); var status = TIMClientAPIDef.TIMLogin(user_id, api.GenSig(Util.UTF16To8(user_id)), (c, des, json, d) => { MessageBox.Show(c.ToString()); }, IntPtr.Zero); Console.WriteLine($"login status:{status}"); }