c# RSA 签名
签名本身有现成的类库可以使用,但是类库要求 XML 格式的秘钥,如果其他人只提供 PEM 格式的秘钥,需要将秘钥转换成 XML 格式的秘钥。
方法1:使用路遥工具箱
方法2:使用 XC.RSAUtil 类库进行转换(要求 .net core)
using System; namespace ConsoleAppCore { class Program { static void Main(string[] args) { string pkcs1Key = @"MIIBOQIBAAJBAMmyN/cdipSvD1N3YTByXoQIwtjy9dW13pCy5FfNes9KAVEjsk0NN8nTR2rAFGIN+cms9bZU3LpLPjtum4/HVPUCAwEAAQJAT+Qm5NwvszswP+hud8klhPkPbO230IHsebZSWjEK7yX2GpQuULPWue+p3mVoCUNaP+KLLIQch5I0DD4OEnKi1QIhAOdURi7gRDznTKv9BlzyJR4lmyba8DABE6uhulwGVpIXAiEA3zToE4kB/H6aaU+TVJ3DQA9vnKuSL5780gRCQO6p9NMCIFEnCGQDewzem9AuOKA8tnbH/JD5947vocXxO55y/sXLAiBMYdOFU95NJJn8rdGSJEa7tkyQhZoKF9MWn4R4qfOZJwIgdWdBWMRZdkhpVQ4zGZPSpTh2uYR5i1pPxOJhv+b+kb0="; Console.WriteLine(XC.RSAUtil.RsaKeyConvert.PrivateKeyPkcs1ToXml(pkcs1Key)); Console.ReadLine(); } } }
有了 XML 格式的秘钥就可以进行签名了(不要求 .net core):
private static string Signature(string originalText, string privateKey) { byte[] byteData = Encoding.UTF8.GetBytes(originalText); RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); provider.FromXmlString(privateKey); byteData = provider.SignData(byteData, new SHA256CryptoServiceProvider());
//return Convert.ToBase64String(byteData);//Base64格式
return BitConverter.ToString(byteData, 0).Replace("-", string.Empty).ToLower();//HEX格式
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)