gpt4 book ai didi

c# - RSACryptoServiceProvider 在 .net 核心中不工作

转载 作者:行者123 更新时间:2023-11-30 18:11:40 25 4
gpt4 key购买 nike

我必须调用政府 API,需要使用他们提供的公钥对 session key 进行加密。以下加密 session key 的代码在使用 .NET 框架的 Windows 服务器上运行良好,但我需要使用 .NET 核心在 aws lambda 上托管 API。出现以下错误

System.InvalidCastException: Unable to cast object of type 'System.Security.Cryptography.RSAOpenSsl' to type 'System.Security.Cryptography.RSACryptoServiceProvider

private static string EncryptRsa(byte[] input)
{
string output = string.Empty;
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new X509Certificate2(@"Cert/server_pub.cer");


using (RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PublicKey.Key)
{
byte[] bytesData = input;
byte[] bytesEncrypted = csp.Encrypt(bytesData, true);
output = Convert.ToBase64String(bytesEncrypted);
}
return output;
}

我将代码更改为以下代码,它运行成功但是当我调用 API 时它给出一个错误提示 session key 解密错误,请使用正确的公钥加密 session key 。

如何在 .net 核心中获得与 RSACryptoServiceProvider 类似的加密

private static string EncryptRsa(byte[] input)
{
string output = string.Empty;
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new X509Certificate2(@"Cert/server_pub.cer");


using (RSA csp = (RSA)cert.PublicKey.Key)
{
byte[] bytesData = input;
byte[] bytesEncrypted = csp.Encrypt(bytesData, RSAEncryptionPadding.Pkcs1);
output = Convert.ToBase64String(bytesEncrypted);
}
return output;
}

回答其他问题的代码不适用于.net core,它使用.net framework Casting private key to RSACryptoServiceProvider not working

最佳答案

它起作用了,在我尝试的更新代码中,我将填充更改为 OaepSHA1,它现在起作用了。谢谢

下面是工作代码(在 AWS Lambda 上测试):

private static string EncryptRsa(byte[] input)
{
string output = string.Empty;
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new X509Certificate2(@"Cert/server_pub.cer");


using (RSA csp = (RSA)cert.PublicKey.Key)
{
byte[] bytesData = input;
byte[] bytesEncrypted = csp.Encrypt(bytesData, RSAEncryptionPadding.OaepSHA1);
output = Convert.ToBase64String(bytesEncrypted);
}
return output;
}

关于c# - RSACryptoServiceProvider 在 .net 核心中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57148122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com