C# RSA-SHA256 实现
时间: 2023-07-12 14:16:53 浏览: 263
以下是 C# 中使用 RSA-SHA256 签名和验证的示例代码:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string data = "Hello, World!"; // 待签名的数据
// 创建 RSA 对象
using (var rsa = RSA.Create())
{
// 加载私钥
rsa.ImportRSAPrivateKey(Convert.FromBase64String("<私钥>"), out _);
// 计算 SHA256 摘要
byte[] hash = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(data));
// 对摘要进行签名
byte[] signature = rsa.SignHash(hash, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
Console.WriteLine($"签名结果:{Convert.ToBase64String(signature)}");
// 加载公钥
rsa.ImportRSAPublicKey(Convert.FromBase64String("<公钥>"), out _);
// 验证签名
bool isValid = rsa.VerifyHash(hash, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
Console.WriteLine($"验证结果:{isValid}");
}
}
}
```
其中,`<私钥>` 和 `<公钥>` 分别为 RSA 私钥和公钥的 Base64 编码字符串。在实际应用中,私钥应该妥善保管,不应该以明文的形式出现在代码中。
阅读全文