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格式
}
复制代码

 

posted @   echo三毛  阅读(941)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示