none
RSA密钥必须是XML格式吗? C# RRS feed

  • 问题

  • 客户的程序是JAVA写的,公钥和私钥都已经给定了,但不是XML格式,例"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAPdmX49y8fL5vk51kR8V"这种格式的,我查过C#很多RSA的例子,都是密钥为XML格式的,如果密钥改成别的格式就会报错!
    这个FromXmlString方法的密钥必须是XML的,如果是普通格式的就报错
    rsaSend.FromXmlString(rsaReceive.ToXmlString(false));  


    不知道有什么办法能解决此问题?

    2011年7月22日 1:19

全部回复

  • 怎么大家都没遇到过吗?囧

    2011年7月22日 3:24
  • 你好 不知道我是否理解了你的意思,请查看我下面这段代码,主要运用 ExportCspBlob和ImportCspBlob方法

    private static void CryptographyTest()
        {
          RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
          byte[] publicKeyBytes = rsa.ExportCspBlob(false);
          byte[] privateKeyBytes = rsa.ExportCspBlob(true);
          Console.WriteLine(Convert.ToBase64String(publicKeyBytes));
          Console.WriteLine(Convert.ToBase64String(privateKeyBytes));
    
          UnicodeEncoding encoding = new UnicodeEncoding();
          RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();
          rsa2.ImportCspBlob(privateKeyBytes);
          string testString = "Hello!";
          byte[] encryptedString = rsa.Encrypt(encoding.GetBytes(testString), false);
          Console.WriteLine(Convert.ToBase64String(encryptedString));
          Console.Write(encoding.GetString(rsa2.Decrypt(encryptedString, false)));
    
        }



    Raymond Tang (Microsoft C# MVP)
    Denn Ich Gehoer nur mir
    微软中文论坛同城社区成都QQ群:74268428
    My Chinese Blog
    Chengdu,Sichuan Province,China
    2011年7月22日 8:53
    版主
  • 谢谢楼上的回复

    这是客户的密钥规范

    RAS加密使用密钥采用标准openssl,派送公司可自行使用工具生成各自所需密钥对。以Linux系统自带工具为例: 

    --生成RSA私钥(传统格式的)

    openssl genrsa -out rsa_private_key.pem 1024

    --将传统格式的私钥转换成PKCS#8格式的(java使用的是PKCS#8格式的私钥,支付宝使用的也是PKCS#8格式的私钥)

    openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

    --生成RSA公钥

    openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

    -----------------------------------------------------------------------------------------------------------------------

    他们给我了他们的公钥和私钥,我们接收数据后要解密验证数据是否正确,现在问题是我不知道怎么用他们的密钥解密或验证是否正确,你给的这个方法不能用现有的密钥加密解密吧?

     

     

    2011年7月23日 5:27
  • Raymond Tang

    74268428这个群已经满员了,,能不能想办法把我也加上?我的QQ:642555838,谢谢!!

    2011年7月23日 9:20
  • PKCS#8格式的密钥不能直接拿来RSA解密吗?需求转换什么格式吗?
    2011年7月25日 2:12