繁体   English   中英

C# 生成的 RSA 公钥是一个 XML 文件。 PHP中的公钥如何解密或转换?

[英]The RSA public key generated by C# is an XML file. How can the public key be decrypted or converted in PHP?

C#生成的公钥文件如下:

<RSAKeyValue><Modulus>1bpPEi4vfSnR+PYdaxqWkkLRbaPMcJYQqnMTg9i2uBQcBQZ0V0k8QBDPHK8wcGs4OAx2WD461fcNsB7aXCa8xPsLM4DO4M+xyfg/HmHEaTQrR1738YaK1WerA890xGeGFybkMRJNbZHLESe0mnsWdeNbyCJs8I7EeLWMHzBPuu0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

如何在 PHP 中转换或解密?

使用 phpseclib v2,

<?php
require __DIR__ . '/vendor/autoload.php';

use phpseclib\Crypt\RSA;

$rsa = new RSA();
$rsa->loadKey('<RSAKeyValue><Modulus>1bpPEi4vfSnR+PYdaxqWkkLRbaPMcJYQqnMTg9i2uBQcBQZ0V0k8QBDPHK8wcGs4OAx2WD461fcNsB7aXCa8xPsLM4DO4M+xyfg/HmHEaTQrR1738YaK1WerA890xGeGFybkMRJNbZHLESe0mnsWdeNbyCJs8I7EeLWMHzBPuu0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>');

echo $rsa;

输出以下内容:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVuk8SLi99KdH49h1rGpaSQtFt
o8xwlhCqcxOD2La4FBwFBnRXSTxAEM8crzBwazg4DHZYPjrV9w2wHtpcJrzE+wsz
gM7gz7HJ+D8eYcRpNCtHXvfxhorVZ6sDz3TEZ4YXJuQxEk1tkcsRJ7SaexZ141vI
ImzwjsR4tYwfME+67QIDAQAB
-----END PUBLIC KEY-----

您的 RSA 公钥由 C# 生成,并且采用(Microsoft 自己的)XML 编码。 有几种以编程方式转换它的方法,但我向您展示了最简单的方法。

由于它是公钥,因此您可以使用在线转换器进行此 tak,例如https://superdry.apphb.com/tools/online-rsa-key-converter

永远不要使用在线工具转换私钥。

只需复制表单中的完整密钥并在PEM-encoding中接收公钥:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVuk8SLi99KdH49h1rGpaSQtFt
o8xwlhCqcxOD2La4FBwFBnRXSTxAEM8crzBwazg4DHZYPjrV9w2wHtpcJrzE+wsz
gM7gz7HJ+D8eYcRpNCtHXvfxhorVZ6sDz3TEZ4YXJuQxEk1tkcsRJ7SaexZ141vI
ImzwjsR4tYwfME+67QIDAQAB
-----END PUBLIC KEY-----

This key can be used in PHP for OpenSSL RSA public key encryption by using "openssl_public_encrypt" ( https://www.php.net/manual/en/function.openssl-public-encrypt.php )-

暂无
暂无

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

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