繁体   English   中英

我如何将RSAParameters从.net转换为.pem文件,以便我可以在php中使用它

[英]how do i convert RSAParameters from .net to .pem file so i can use it in php

您好,我有.net中生成的RSA的私钥和公钥

以这种格式

string privateKey = "<RSAKeyValue>" +
                         "<Modulus>...kCFhsjB4xMW49mrx5B/Ga...</Modulus>" +
                         "<Exponent>...</Exponent>" +
                         "<P>...7bRCrQVgVIfXdTIH3iY8x...</P>" +
                         "<Q>...4SiQDhrAZADuFDTr7bRCrQVgVIfXdTIH3iY8x...</Q>" +
                         "<DP>...ZADuFDTr7bRCrQVgVIfXdT...</DP>" +
                         "<DQ>...4SiQDhrAZADuFDTr...</DQ>" +
                         "<InverseQ>...sjB4xMW49mrx5B/Ga...</InverseQ>" +
                         "<D>...SiQDhrAZADuFDTr7bRCrQVgVIf...</D>" +
                     "</RSAKeyValue>";

我怎么能转换这个,所以我可以在php openssl函数中使用它来加密和解密数据? 我需要转换公钥和私钥。

也许用linux中的openssl bash命令,我可以指定自己的模数,指数等等?

有任何想法吗?

谢谢

不幸的是,我还没有找到你所描述的确切问题的解决方案,但是,有一些你可能会觉得有用的解决方法:

  • 如果您可以访问.NET源,则可以将密钥导出为PEM。 (如果通过标准系统库可以实现这一点,我不肯定,但BouncyCastle肯定支持
  • 如果您能够使用其他语言来翻译密钥,则可以在perl中相对简单地完成。

    使用Crypt :: OpenSSL :: RSA;
    使用Crypt :: OpenSSL :: Bignum;
    使用MIME :: Base64;
    $ modulus = Crypt :: OpenSSL :: Bignum-> new_from_bin(decode_base64($ XMLModulus));
    $ exponent = Crypt :: OpenSSL :: Bignum-> new_from_bin(decode_base64($ XMLExponent));
    #你可以读取剩下的参数与前两个相同
    不需要#dq,dp和inverseQ
    $ privateKey = Crypt :: OpenSSL :: RSA - >($ modulus,$ exponent,$ d,$ p,$ q)
    #以PHP应支持的标准二进制形式(DER)输出它。 print $ privateKey-> get_private_key_string()
    #如果你需要PEM,openssl绝对可以转换它。

抱歉,我无法为您提供PHP正确的解决方案。 希望C#解决方案能够正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM