302,160
社区成员
发帖
与我相关
我的任务
分享求助各位大佬C# RSAwithSHA256 签名使用PSS填充方式,需要指定salt长度为32。(PSS签名中包含随机因子,因此每次签名结果都会变化),应该这么写。。
using System;
using System.Security.Cryptography;
using System.Text;
public class RSASignatureExample
{
public static void Main()
{
try
{
// 创建RSA实例
using (RSA rsa = RSA.Create())
{
// 从文件或其他来源加载RSA密钥
// rsa.ImportParameters(...);
// 需要签名的数据
byte[] data = Encoding.UTF8.GetBytes("Example data to sign");
// 设置PSS填充方式和salt长度
RSASignaturePadding padding = RSASignaturePadding.Pss;
int saltLength = 32; // 指定salt长度为32
// 进行签名
byte[] signature = SignData(rsa, data, padding, saltLength);
Console.WriteLine("Signature: " + Convert.ToBase64String(signature));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
private static byte[] SignData(RSA rsa, byte[] data, RSASignaturePadding padding, int saltLength)
{
// RSA with SHA256
HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256;
// 使用PSS填充方式和指定的salt长度进行签名
return rsa.SignData(data, hashAlgorithm, padding, saltLength);
}
}