netcore调用契约锁验签接口

请求头:三个自定义参数和一个Content-Type:

​ 1、自定义参数 x-qys-accesstoken :“创建应用”时生成的AppToken;

​ 2、自定义参数 x-qys-timestamp :发起请求的当前时间,可以取自机器的本地时间,误差不能超过15分钟;

​ 3、自定义参数 x-qys-nonce :本地生成的随机数,一般用UUID标识,15分钟内不能重复。与时间参数结合防止重放攻击;

​ 4、自定义参数 x-qys-signature :即签名信息,生成算法为:Md5(AppToken + AppSecret + timestamp+nonce),即AppToken 和 AppSecret 和 timestamp和nonce拼接的字符串的MD5值,注:MD5值为32位小写

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var formData = new MultipartFormDataContent();
 
       var seed = Guid.NewGuid().GetHashCode();
       Random rd = new Random(seed);
       int i = rd.Next(0,100000);
       double j = (double)i / 100000;
 
       string uuid = j.ToString();
       string AppToken = "wWqwt5Aa8A";
       string AppSecre = "TYkdqgZFZOOTfw6VspVK4znw5MzoP4";
       TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
       string time =  Convert.ToInt64(ts.TotalMilliseconds).ToString();
       string signature = MD5Hepler.MD5Encrypt32(AppToken + AppSecre + time + uuid);
       formData.Headers.Add("x-qys-accesstoken", AppToken);
       formData.Headers.Add("x-qys-timestamp", time);
       formData.Headers.Add("x-qys-nonce", uuid);
       formData.Headers.Add("x-qys-signature", signature);
       formData.Add(new StreamContent(memoryStream, (int)memoryStream.Length), "file", fileName);
 
       var _httpclient = new HttpClient();
       var response = _httpclient.PostAsync(uri, formData).Result;

  

posted @   zwbsoft  阅读(278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示