Php 如何从模、指数和私有指数创建Crypt::RSA对象?
我正在尝试将以下php功能移植到perl: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
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==