当前位置: 首页 > 知识库问答 >
问题:

在c中使用RSACryptServiceProvider查找公钥和私钥#

楚浩然
2023-03-14

我有以下代码。

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Save the public key information to an RSAParameters structure.
RSAParameters RSAKeyInfo = RSA.ExportParameters(true);

byte[] toEncryptData = Encoding.ASCII.GetBytes("hello world");
byte[] encryptedRSA = RSAEncrypt(toEncryptData, RSAKeyInfo, false);
string EncryptedResult = System.Text.Encoding.Default.GetString(encryptedRSA);

byte[] decryptedRSA = RSADecrypt(encryptedRSA, RSAKeyInfo, false);
string originalResult = System.Text.Encoding.Default.GetString(decryptedRSA);
return userDetails.ToString();

当我使用rsacyncrypt方法时,它采用参数“RSAKeyInfo”(用于加密的公钥和用于解密的私钥)。

如何获取此方法用于加密和解密的私钥和公钥的值。

谢谢

共有1个答案

鲁向明
2023-03-14

您需要使用RSA。ToXmlString

下面的代码使用两个不同的RSA实例,其共享字符串包含公钥和私钥。要仅获取公钥,请使用参数false,参数true将返回公钥。

class Program
{
    public static void Main(string[] args)
    {
        //Encrypt and export public and private keys
        var rsa1 = new RSACryptoServiceProvider();
        string publicPrivateXml = rsa1.ToXmlString(true);   // <<<<<<< HERE
        byte[] toEncryptData = Encoding.ASCII.GetBytes("hello world");
        byte[] encryptedRSA = rsa1.Encrypt(toEncryptData, false);
        string EncryptedResult = Encoding.Default.GetString(encryptedRSA);

        //Decrypt using exported keys
        var rsa2 = new RSACryptoServiceProvider();
        rsa2.FromXmlString(publicPrivateXml);    
        byte[] decryptedRSA = rsa2.Decrypt(encryptedRSA, false);
        string originalResult = Encoding.Default.GetString(decryptedRSA);

    }
}
 类似资料:
  • 如何使用RSA私钥文件正确创建RSACryptoServiceProvider对象?我生成了一个RSA私钥,并使用以下方法将其导出到OSX上的p12文件: 在Windows笔记本电脑上运行的C#代码中,我尝试实例化X509Certificate2对象时出错,因此我可以从中获取私钥作为RSACryptServiceProvider对象: CryptographicException:参数不正确。 下

  • 问题内容: 我以编程方式创建了jks类型(即默认类型)的Java密钥库。 它最初是空的,所以我创建了DSA证书。 如何查看公钥和私钥? 即有一个命令可以打印我的证书的私钥? 我只能从我的理解中找到哪个可以整体打印证书: 我认为这是整个证书。如何通过keytool查看私钥(或公钥)? 问题答案: 您在密钥库中创建了一个私有(和关联的公共)密钥。要使其真正可用,可以让它由认证机构(CA)签名- 因为这

  • 我想使用公钥/私钥技术加密数据。我的意思是,用接收者的公钥加密,接收者可以用自己的私钥解密。 我该怎么做?您有什么建议或示例代码吗?

  • 我找到了几个可以使用的解决方案。Net RSA Provider使用公钥对消息进行加密,并使用私钥对其解密。 但我想要的是用私钥加密,用公钥解密。 我希望在我的应用程序中存储公钥,并使用私钥加密许可证,例如在我的开发人员计算机上,将其发送到应用程序,并让信息使用公钥解密。 我怎样才能做到这一点?

  • 我需要在C#中加密数据,以便将其传递给Java。Java代码属于第三方,但我得到了相关的源代码,因此我决定,由于Java使用Bouncy Castle库,所以我将使用C#端口。 解密工作正常。但是,解密仅在使用私钥使用encrypt时有效,而不是使用公钥。使用公钥时,解密失败,出现。 编辑: 我还添加了一个单元测试,它证明公钥等于从私钥中提取的公钥:

  • 我知道可以使用此链接为OpenSSL中的自签名证书生成一个公钥和一个私钥。但是对于给定的公钥,我有没有可能算出对应的私钥呢?我一直在使用1024位的RSA公钥。