예제 #1
0
        public void TestMethod4()
        {
            TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e");
            string      sig = api.genPrivateMapKeyWithStringRoomID("xiaojun", 86400 * 180, "100086545679", 255);

            System.Console.WriteLine(sig);
        }
예제 #2
0
        public void TestMethod1()
        {
            TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e");
            string      sig = api.genUserSig("xiaojun");

            System.Console.WriteLine(sig);
        }
예제 #3
0
        /// <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)));
        }
예제 #4
0
        public void TestMethod3()
        {
            TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e");
            string      sig = api.GenSigWithUserBuf("xiaojun", 86400 * 180, System.Text.Encoding.Default.GetBytes("abc"));

            System.Console.WriteLine(sig);
        }
예제 #5
0
        public void TestMethod2()
        {
            TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e");

            for (int i = 0; i < 100; i++)
            {
                string sig = api.GenSig("xiaojun");
                System.Console.WriteLine(sig);
            }
        }
예제 #6
0
        public void TestMethod3()
        {
            TLSSigAPIv2 api = new TLSSigAPIv2(1400000000, "5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e");

            byte[] userBuf = api.GetUserBuf("xiaojun", 10000, 86400 * 180, 255, 0);
            System.Console.WriteLine(Convert.ToBase64String(userBuf));
            string sig = api.GenSigWithUserBuf("xiaojun", 86400 * 180, userBuf);

            System.Console.WriteLine(sig);
        }
예제 #7
0
        /// <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)));
        }
예제 #8
0
        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));
            }
        }
예제 #9
0
        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}");
        }