【问题标题】:How to generate a DER/PEM certificate from public exponent and modulus of RSA?如何从 RSA 的公共指数和模数生成 DER/PEM 证书?
【发布时间】:2011-08-23 19:19:06
【问题描述】:

众所周知,公钥由一个公共指数和一个模数组成。

我的问题是:

如何根据RSA的公开指数和模数生成DER/PEM证书?

非常感谢您。

【问题讨论】:

    标签: php rsa pem der


    【解决方案1】:

    使用公共指数和模数,您希望做的最好的事情就是得到这样的结果:

    -----BEGIN PUBLIC KEY-----
    MIGGAoGAfHlcdrcuOK6C02rbGR3SgV/ZJ2wnTiFBguh5FHduoB6LcZz49LIC/KcIiH/TckK8GxQd
    oJ7wHCPBpNiumrlC6caj/C8jO/HZ3cb12Wuk4gUuJq1lg5+HTv4KRJ9pFeEFQqS6X+BTztY+EoRx
    uc8MlLXS4PUeouwd9Ios2K0Y5/sCASU=
    -----END PUBLIC KEY-----
    

    也就是说,通常 DER/PEM 文件用于保存私钥,而当您拥有的只是公钥时,您将无法获得私钥。但是,如果您正在寻找以上内容,请告诉我,我可以发布有关如何从模数/公共指数中获取它的进一步说明!

    编辑:这是我的做法:

    <?php
    include('Crypt/RSA.php');
    
    $modulus = new Math_BigInteger($modulusBinaryString, 256);
    $exponent = new Math_BigInteger($exponentBinaryString, 256);
    
    $rsa = new Crypt_RSA();
    $rsa->modulus = $modulus;
    $rsa->exponent = $exponent;
    $rsa->publicExponent = $exponent;
    $rsa->k = strlen($rsa->modulus->toBytes());
    
    echo $rsa->getPublicKey(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
    ?>
    

    我正在使用phpseclib, a pure PHP RSA implementation

    【讨论】:

    • 非常感谢。这正是我想要的。请告诉我如何从模数/公共指数中得到它!
    • DER/PEM 文件不一定是私钥文件。它们几乎可以是任何东西,通常是 X.509 证书。
    • 我认为 Crypt_RSA 改变了接口,我得到了Call to undefined method Crypt_RSA::getPublicKey() :(
    • 那个功能还在。你是在做 Crypt_RSA::getPublicKey() 还是 $rsa->getPublicKey()?您使用的是最新的 SVN 还是什么?
    猜你喜欢
    • 2015-06-22
    • 2016-12-06
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    相关资源
    最近更新 更多