如何将 RSAParameters 从 .net 转换为 .pem 文件,以便我可以在 php 中使用它
生成的 RSA 私钥和公钥,
您好,我有一个在 .net 中以这种格式
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命令我可以指定我自己的模数、指数等?
有什么想法吗?
谢谢
Hello i have a private and public keys for RSA generated in .net
in this format
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>";
how can i convert this so i can use it in php openssl functions to encrypt and decrypt data?
i need both public and private keys converted.
maybe with openssl bash command in linux where i can specify my own modulus, exponent and so on?
any ideas?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不幸的是,我还没有找到您所描述的确切问题的解决方案,但是,您可能会发现一些有用的解决方法:
如果您有能力使用另一种语言来翻译密钥,那么在 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) 输出。
打印 $privateKey->get_private_key_string()
# 如果你需要 PEM,openssl 绝对可以转换它。
抱歉,我无法为您提供正确的 PHP 解决方案。希望 C# 解决方案能够发挥作用。
Unfortunately, I haven't found a solution to the exact problem you've described, however, there are a few work-arounds you may find useful:
If you can afford to use another language to translate the key, this can be done relatively easy in perl.
use Crypt::OpenSSL::RSA;
use Crypt::OpenSSL::Bignum;
use MIME::Base64;
$modulus = Crypt::OpenSSL::Bignum->new_from_bin(decode_base64($XMLModulus));
$exponent= Crypt::OpenSSL::Bignum->new_from_bin(decode_base64($XMLExponent));
# You can reading in the remaining parameters is the same as the first two
# dq, dp, and inverseQ are not needed
$privateKey = Crypt::OpenSSL::RSA->($modulus, $exponent, $d, $p, $q)
# Outputs it in a standard binary form (DER) which PHP should support.
print $privateKey->get_private_key_string()
# If you need PEM, openssl can definitely convert it.
Sorry I couldn't get you a solution in PHP proper. Hopefully the C# solution will work though.