腾讯云通信后台生成usersig只有java实现代码。以下是根据java代码转换为net实现,java版GitHub地址:https://github.com/TencentVideoCloudMLVBDev/usersig_server_source/blob/master/java/WebRTCSigApi.java。

需要使用类库:Portable.BouncyCastle,SharpZipLib,直接从nuget下载安装即可。

另外我正在实现腾讯云IM服务端Sdk .NetCore版本,github地址:https://github.com/yangxuilyx/QCloudIM.AspNetCore

 public class TlsSignature
{
/// <summary>
/// 获取用户sign
/// </summary>
/// <param name="appid">appid</param>
/// <param name="privateKey">私钥</param>
/// <param name="userid">用户名</param>
/// <param name="expire">userSig有效期,出于安全考虑建议为300秒,您可以根据您的业务场景设置其他值。</param>
/// <returns>生成的userSig</returns>
public static string GenUserSig(string appid, string privateKey, string userid, int expire)
{

var time = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
String serialString =
"TLS.appid_at_3rd:" + + "\n" +
"TLS.account_type:" + + "\n" +
"TLS.identifier:" + userid + "\n" +
"TLS.sdk_appid:" + appid + "\n" +
"TLS.time:" + time + "\n" +
"TLS.expire_after:" + expire + "\n"; var sign = Convert.ToBase64String(Sign(privateKey, Encoding.UTF8.GetBytes(serialString))); String jsonString = "{"
+ "\"TLS.account_type\":\"" + + "\","
+ "\"TLS.identifier\":\"" + userid + "\","
+ "\"TLS.appid_at_3rd\":\"" + + "\","
+ "\"TLS.sdk_appid\":\"" + appid + "\","
+ "\"TLS.expire_after\":\"" + expire + "\","
+ "\"TLS.sig\":\"" + sign + "\","
+ "\"TLS.time\":\"" + time + "\","
+ "\"TLS.version\": \"201512300000\""
+ "}"; var compressBytes = Compress(Encoding.UTF8.GetBytes(jsonString)); var userSign = Base64UrlEncode(compressBytes);
return userSign;
} private static byte[] Compress(byte[] data)
{
Deflater mDeflater = new Deflater();
mDeflater.SetInput(data);
mDeflater.Finish();
byte[] compressBytes = new byte[];
int compressBytesLength = mDeflater.Deflate(compressBytes); mDeflater.Flush(); return compressBytes.Take(compressBytesLength).ToArray();
} /// <summary>
/// ECDSA-SHA256签名
/// </summary>
/// <param name="privateKey">私钥</param>
/// <param name="data">需要签名的数据</param>
/// <returns></returns>
private static byte[] Sign(string privateKey, byte[] data)
{
ECPrivateKeyParameters privateKeyParam = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey)); var signer = SignerUtilities.GetSigner("SHA256withECDSA");
signer.Init(true, privateKeyParam);
signer.BlockUpdate(data, , data.Length); return signer.GenerateSignature();
} /// <summary>
/// 验证ECDSA-SHA256签名
/// </summary>
/// <param name="publicKey">公钥</param>
/// <param name="data">需要验证的数据原文</param>
/// <param name="sig">需要验证的签名</param>
/// <returns>true:验证成功 false:验证失败</returns>
public static bool Verify(string publicKey, byte[] data, byte[] sig)
{
ECPublicKeyParameters publicKeyParam = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey)); var signer = SignerUtilities.GetSigner("SHA256withECDSA");
signer.Init(false, publicKeyParam);
signer.BlockUpdate(data, , data.Length); return signer.VerifySignature(sig); } private static string Base64UrlEncode(byte[] data)
{
return Convert.ToBase64String(data).Replace('+', '*').Replace('/', '-')
.Replace('=', '_');
} private static string Base64UrlDecode(byte[] data)
{
return Convert.ToBase64String(data).Replace('*', '+').Replace('-', '/')
.Replace('_', '=');
}
}

腾讯云通信UserSig生成.Net实现的更多相关文章

  1. 服务端搭建——腾讯云通信(IM)

    前言 在手机app中因为需要即时聊天功能,在项目采用腾讯云通信服务.如下流程图: 当手机端拿到签名后,就可登录IM,使用im提供的sdk收发信息. 准备工作 1.在腾讯云注册获取appid 2.申请开 ...

  2. 腾讯云通信WebIM事件回调的坑~

    最近在开过工作中用到了腾讯IM的功能,由于业务的需要主要使用到了: 1.loginInfo 用户登录,用户信息 2.getRecentContactList 获得最近联系人 3.getLastGrou ...

  3. 腾讯通信云服务端使用心得,腾讯云IM

    腾讯通信云服务端使用心得 1.腾讯通信服务入口并创建应用 方便使用保留url地址 :   https://cloud.tencent.com/product/im 注册账号腾讯云账号->通过审核 ...

  4. 【手把手教程】uniapp + vue 从0搭建仿微信App聊天应用:腾讯云TXIM即时通讯的最佳实践

    基于uniapp + vue 实现仿微信App聊天应用实践,实现以下功能 1: 用户登陆 2: 聊天会话管理 3: 文本/图片/视频/定位消息收发 4: 贴图表情消息收发 5: 一对一语音视频在线通话 ...

  5. 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货

    基于uniapp + vue 实现仿斗鱼虎牙腾讯云移动直播应用实践,实现以下功能 1: 用户登陆 2: 房间管理 3: 房间聊天 4: 直播美颜 5: Svga礼物动画 6: 一对一连麦观众 项目开发 ...

  6. IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?

    2016年,Twilio的成功上市,以及抢眼的股价表现,拓宽了全球云通信行业的想象空间,行业内公司估值水平也集体上调. 在中国,IM云通信行业也从2016年开始进入了一个“黄金发展时期”,一批如融云. ...

  7. Python利用Twilio(国际)以及腾讯云服务做一些事情

    短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务分别来体验一下国际短信和国内短信接口. 首先,注册Twilio: www.t ...

  8. Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_152 短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务 ...

  9. 腾讯云H5语音通信QoE优化

    本文首发在云+社区,未经许可,不得转载. 云+导语:4月21日,腾讯云+社区在京举办"'音'你而来,'视'而可见--音视频技术开发实战沙龙",腾讯音视频实验室高级工程师张轲围绕网络 ...

随机推荐

  1. 拼接两个yuv合帧

    http://blog.csdn.net/huahuahailang/article/details/9040847 /**************************************** ...

  2. 利用Surprise包进行电影推荐

    Surprise(Simple Python Recommendation System Engine)是一款推荐系统库,是scikit系列中的一个.简单易用,同时支持多种推荐算法(基础算法.协同过滤 ...

  3. 通过devtools在centos系统中启用高版本的gcc

    C++11出来好久了,现在还是使用c++03的,需要在centos6.6的系统上实现gcc的升级,又不想自己编译代码. 于是选用了devtoolsset系列,安装脚本如下 安装脚本如下 functio ...

  4. ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...

  5. Robocopy和xxcopy全掌握

    Windows提供的复制操作功能实在是太过简陋,可定制性又不强,在复制.移动.备份文件夹的时候,总要循环往复做多次操作.现在我们就向你介绍两款强力复制备份软件:Robocopy和XXCOPY,具体功能 ...

  6. JAVA中List的几个方法

    add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码:    public static ...

  7. poolmanager1.path-o-logical 很好的prefab preload工具

    http://docs.poolmanager1.path-o-logical.com/ 提高性能的不错选择

  8. Python实现常见算法[1]——冒泡排序

    #!/usr/bin/python def BUBBLE_SORT(L, x, y): j = y while j>x: i = x while i<j: if L[i] > L[i ...

  9. style多次设置行内样式

    语法 style="font-size:32px;background-color:#aaa"

  10. 689. Maximum Sum of 3 Non-Overlapping Subarrays三个不重合数组的求和最大值

    [抄题]: In a given array nums of positive integers, find three non-overlapping subarrays with maximum ...