/// <summary>
/// 返回签名并转换为Base64字符串
/// </summary>
/// <param name="data"></param>
/// <param name="rsaKey">私钥</param>
/// <returns></returns>
public static string SignDataSha1WithRsa(string data,string rsaKey)
{
// 创建一个RSA对象
using (RSA rsa = LoadPrivateKey(rsaKey))
{
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
byte[] signature = rsa.SignData(dataBytes, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
return Convert.ToBase64String(signature);
}
}
/// <summary>
/// 注意调用处释放rsa对象
/// </summary>
/// <param name="privateKeyStr"></param>
/// <returns></returns>
private static RSA LoadPrivateKey(string privateKeyStr)
{
// 假设私钥是PKCS#1格式的RSA私钥
// 在实际应用中,你可能需要根据私钥的实际格式来调整解析方式
byte[] privateKeyBytes = Convert.FromBase64String(privateKeyStr);
ReadOnlySpan<byte> keyBytes = privateKeyBytes;
RSA rsa = RSA.Create();
rsa.ImportPkcs8PrivateKey(keyBytes, out _);
return rsa;
}
07-05
1万+