首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建X509Certificate2公钥中的问题

创建X509Certificate2公钥中的问题
EN

Stack Overflow用户
提问于 2022-08-04 17:56:47
回答 1查看 141关注 0票数 1

我有一个现有的asp.net应用程序,其中我使用X509Certificate2私钥和公钥。我正在将它迁移到netcoreapp2.1 (MVC)。在使用X509Certificate2创建公钥时,我面临着一个问题。我有下面的代码

代码语言:javascript
复制
  public string CertificatePublicKeyEncrypt(string stringToEncrypt, string certficatePath)
    {
        byte[] bytesToEncrypt = ASCIIEncoding.ASCII.GetBytes(stringToEncrypt);

        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

        X509Certificate2 cert = new X509Certificate2(certficatePath);

        RSACryptoServiceProvider rsa = cert.PublicKey.Key as RSACryptoServiceProvider;

        byte[] encryptedData = rsa.Encrypt(bytesToEncrypt, false);

        return Convert.ToBase64String(encryptedData);
    }

在asp.net应用程序中,cert.Handle值为"0x0792e4a0“,并在使用Server.MapPath函数确定证书位置的情况下成功地创建了rsa,如下所示:

代码语言:javascript
复制
   req.Sender = helper.CreateSenderObj(txt_sender_id.Text, txt_sender_name.Text, txt_efinance_password.Text, Server.MapPath("~/Certificates/InternetPaymentCrt.cer"));

asp.net项目中的处理值,但在我们的MVC项目中,cert.Handle值为“0x0000019d814fffa0”,然后rsa为空,其中证书位置是使用Hosting.ContentRootPath函数确定的,如下所示:

代码语言:javascript
复制
 var path = $"{Hosting.ContentRootPath}\\Certificates\\InternetPaymentCrt.cer"; 
         req.Sender = helper.CreateSenderObj(VM.SenderId, VM.SenderName, VM.SenderPassword,path);   

MCV项目中的处理值并给出空异常错误,如下所示:System.NullReferenceException

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 20:00:42

在.NET核心应用程序中,X509Certificate2.PublicKeyX509Certificate2.PrivateKey实际上已经过时了。您必须使用X509Certificate2扩展方法 (取决于密钥算法的相应方法)来检索公钥和私钥。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73240387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档