1.获取证书路径
var basePath = _environment.ContentRootPath; //商户私钥证书,用于对请求报文进行签名 var tempSignCert = new X509Certificate2(basePath + @"\Cert\test.p12", "111111");
2.数据加密
.net core 中使用gbk encoding需要调用Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
nuget包中使用System.Text.Encoding.CodePages
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var sha1 = SHA1.Create(); var msg = sha1.ComputeHash(Encoding.GetEncoding("GBK").GetBytes(signeText)); var signature = tempSignCert.GetRSAPrivateKey().SignHash(msg, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1); signeText = ToHex(signature); //todo 字段加密拼装 var data= Encoding.GetEncoding("GBK").GetBytes(str);
private static string ToHex(byte[] ba) { if (ba == null) return ""; var buf = new char[ba.Length * 2]; var p = 0; foreach (var b in ba) { buf[p++] = HexChars[b >> 4]; buf[p++] = HexChars[b & 0x0f]; } return new string(buf); }
3.HttpClient请求,在handler里添加X509Certificate2 证书,数据data是byte[]类型,所以需要使用ByteArrayContent传入。
var handler = new HttpClientHandler { ClientCertificateOptions = ClientCertificateOption.Manual, SslProtocols = SslProtocols.Tls12 };
handler.ClientCertificates.Add(tempSignCert); handler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls; handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true;
using (var client = new HttpClient(handler)) { var httpContent = new ByteArrayContent(data); var response = await client.PostAsync(url, httpContent); var str = await response.Content.ReadAsStringAsync(); //todo 处理数据 }
以上。:)
分类:
.net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理