using System;
using System.Security.Cryptography;
using System.Text;
public class SHA256WithRSAExample
{
public static void Main()
{
// 要签名的数据
string data = "Hello, World!";
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
// 生成 RSA 密钥对
using (RSA rsa = RSA.Create())
{
// 获取私钥和公钥(用于演示,实际应用中应妥善保存密钥)
Console.WriteLine("Private Key: " + rsa.ExportParameters(true));
Console.WriteLine("Public Key: " + rsa.ExportParameters(false));
// 使用私钥进行签名
byte[] signature = SignData(rsa, dataBytes);
Console.WriteLine("Signature: " + Convert.ToBase64String(signature));
// 使用公钥验证签名
bool isValid = VerifySignature(rsa, dataBytes, signature);
Console.WriteLine("Is Signature Valid: " + isValid);
}
}
private static byte[] SignData(RSA rsa, byte[] data)
{
// 使用 SHA256withRSA 签名
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
private static bool VerifySignature(RSA rsa, byte[] data, byte[] signature)
{
// 使用 SHA256withRSA 验证签名
return rsa.VerifyData(data, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
}
生成 RSA 密钥对:
RSA.Create()
创建一个新的 RSA 密钥对。ExportParameters(true)
返回私钥参数,ExportParameters(false)
返回公钥参数。签名数据:
SignData
方法使用私钥对数据进行签名。这里使用了 SHA-256 哈希算法和 PKCS#1 填充方式。rsa.SignData
方法返回签名后的字节数组。验证签名:
VerifySignature
方法使用公钥验证签名。同样使用 SHA-256 和 PKCS#1 填充方式进行验证。rsa.VerifyData
方法返回一个布尔值,表示签名是否有效。输出结果:
这个示例展示了如何在 C# 中使用 SHA256withRSA 对数据进行签名和验证。
上一篇:selenium c#
下一篇:c#串口
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站