逝者如斯夫(三)

C# Api接口调用

  记录一下关于C# 的接口调用吧,距离上次更新应该是三年左右了,总是没有时间静下来,正好趁着今天看博客的时候,发现自己也可以再记录一下,因为期间做了其他的语言的开发,最近才搞了一个关于调用第三方接口的功能,里面涉及到两种加密逻辑,感觉可以和大家说一下,废话不多说,开整。。。

  • 根据需求文档了解,具体需求,,,到接口文档了,熟悉接口文档,涉及到AES、MD5加密,之前做的接口基本就是MD5加密,Post请求头里面增加token等,但是这个光加密就两种,还没说Post请求头里面需要配置的。
  • 滤了一下具体的加密方式AES(MD5(x2),key),生成签名,AES对称加密,ECB模式,PaddingPKCS5;
  • 考虑到之前做了很多很多的接口对接,没有把这个小接口放在心上,结果做的时候发现找的AES加密和第三方给的JAVA的加密出来的不一致,这就很尴尬了。。。
  • 索性根据自己找到的AES加密改改,上代码;
 1 public static string AESEncrypt(String data, String key)
 2             {
 3                 if (string.IsNullOrEmpty(data))
 4                 {
 5                     return string.Empty;
 6                 }
 7 
 8                 try
 9                 {
10                     int intKeyBit = 128;
11                     RijndaelManaged aes = new RijndaelManaged();
12                     byte[] bytsData = Encoding.UTF8.GetBytes(data);
13                     byte[] bytsKey = new Byte[intKeyBit / 8];
14                     Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bytsKey.Length)), bytsKey, bytsKey.Length);
15 
16                     aes.Mode = CipherMode.ECB;
17                     aes.Padding = PaddingMode.PKCS7;
18                     aes.KeySize = intKeyBit;
19                     aes.Key = bytsKey;
20                     //aes.IV = iv;
21                     ICryptoTransform ctf = aes.CreateEncryptor();
22                     byte[] bytsResult = ctf.TransformFinalBlock(bytsData, 0, bytsData.Length);
23 
24                     return Convert.ToBase64String(bytsResult);
25                 }
26                 catch
27                 {
28                     return string.Empty;
29                 }
30             }
View Code
  • MD5 的话,就不贴了,简单的很,最后格式为小写x2,大写的是X2,备忘一下;
  • 就是这些,别的也不多说了,就是简单的记录一下,省的以后忘记了,此为本人的一点拙见,不息勿喷。
posted @ 2023-09-09 15:59  Frequently  阅读(2)  评论(0编辑  收藏  举报