您好我有.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命令我可以指定自己的模数,指数等等?
任何想法?
感谢
答案 0 :(得分:1)
不幸的是,我还没有找到您所描述的确切问题的解决方案,但是,您可能会发现一些有用的解决方法:
如果您能够使用其他语言翻译密钥,可以在perl中相对简单地完成。
使用Crypt :: OpenSSL :: RSA;
使用Crypt :: OpenSSL :: Bignum;
使用MIME :: Base64;
$ modulus = Crypt :: OpenSSL :: Bignum-&gt; new_from_bin(decode_base64($ XMLModulus));
$ exponent = Crypt :: OpenSSL :: Bignum-&gt; new_from_bin(decode_base64($ XMLExponent));
#你可以读取剩下的参数与前两个相同的
不需要#dq,dp和inverseQ
$ privateKey = Crypt :: OpenSSL :: RSA-&gt;($ modulus,$ exponent,$ d,$ p,$ q)
#以PHP应支持的标准二进制形式(DER)输出它。
print $ privateKey-&gt; get_private_key_string()
#如果你需要PEM,openssl绝对可以转换它。
抱歉,我无法为您提供适当的PHP解决方案。希望C#解决方案能够工作。