我用 PHP 生成 RSA 公钥和私钥:

function genKeys($pkey, $skey)
{
    $pkGenerate = openssl_pkey_new(array(
        'private_key_bits' => 2048,
        'private_key_type' => OPENSSL_KEYTYPE_RSA
    ));

    $pkGeneratePrivate = null;
    openssl_pkey_export($pkGenerate, $pkGeneratePrivate);

    $pkGenerateDetails = openssl_pkey_get_details($pkGenerate);
    $pkGeneratePublic  = $pkGenerateDetails['key'];

    openssl_pkey_free($pkGenerate);

    $pkImport        = openssl_pkey_get_private($pkGeneratePrivate);
    $pkImportDetails = openssl_pkey_get_details($pkImport);
    $pkImportPublic  = $pkImportDetails['key'];

    openssl_pkey_free($pkImport);

    $result = (bool) strcmp($pkGeneratePublic, $pkImportPublic);

    if ($result) {
        file_put_contents($pkey, $pkGeneratePrivate);
        file_put_contents($skey, $pkGeneratePublic);
    }

    return $result;

}

我需要将 PEM 文件与 RSACryptoServiceProvider 一起使用。

那么,如何将 PEM public 和 private 转换为 XML?

最佳答案

使用 http://phpseclib.sourceforge.net/ :

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('...');

echo $rsa->getPrivateKey(CRYPT_RSA_PRIVATE_FORMAT_XML);

关于c# - 将 pem rsa key 转换为 C# RSACryptoServiceProvider.FromXmlString 的 xml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27580063/

10-12 13:57