Php 如何从模、指数和私有指数创建Crypt::RSA对象?

Php 如何从模、指数和私有指数创建Crypt::RSA对象?,php,perl,rsa,Php,Perl,Rsa,我正在尝试将以下php功能移植到perl: public function loadKey($mod, $exp, $type = 'public') { $rsa = new Crypt_RSA(); $rsa->signatureMode = CRYPT_RSA_SIGNATURE_PKCS1; $rsa->setHash('sha256'); $rsa->modulus = new Math_BigInteger(Magicsig::bas

我正在尝试将以下php功能移植到perl:

public function loadKey($mod, $exp, $type = 'public')
{
    $rsa = new Crypt_RSA();
    $rsa->signatureMode = CRYPT_RSA_SIGNATURE_PKCS1;
    $rsa->setHash('sha256');
    $rsa->modulus = new Math_BigInteger(Magicsig::base64_url_decode($mod), 256);
    $rsa->k = strlen($rsa->modulus->toBytes());
    $rsa->exponent = new Math_BigInteger(Magicsig::base64_url_decode($exp), 256);

    // snip...
}
我需要转换以下格式的字符串(“RSA.$mod.$exp.$private\u exp”):


…到Crypt::RSA对象。我已经将组件分开,所以我有$mod、$exp和$private\u exp,但是perl Crypt::RSA API似乎没有明确设置的方法。

在IRC上工作,在这里为世界其他地方记录它:它完全没有文档化,但是
Crypt::RSA::Key
确实有名为
n
e
的方法,和
d
,对应于模数、公共指数和私有指数。检查函数中的模错误(如果
p
q
不可用,但
n
可用,但实际上不可用,则该函数应该工作),可以使用这些方法创建工作键

我们一起解决了这个问题,创建了一个子类
Crypt::RSA::Key::Private
,使用工厂方法对base64编码(使用)和额外的二进制编码(使用->from_hex和
解包“H*”
)进行解码,然后设置这三个私有成员,而
Crypt::RSA
模块能够接受它作为密钥

RSA.mVgY8RN6URBTstndvmUUPb4UZTdwvwmddSKE5z_jvKUEK6yk1u3rrC9yN8k6FilGj9K0eeUPe2hf4Pj-5CmHww==.AQAB.Lgy_yL3hsLBngkFdDw1Jy9TmSRMiH6yihYetQ8jy-jZXdsZXd8V5ub3kuBHHk4M39i3TduIkcrjcsiWQb77D8Q==