我正在尝试将以下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...
}
Run Code Online (Sandbox Code Playgroud)
我需要转换表单中的字符串("RSA.$ mod.$ exp.$ private_exp"):
RSA.mVgY8RN6URBTstndvmUUPb4UZTdwvwmddSKE5z_jvKUEK6yk1u3rrC9yN8k6FilGj9K0eeUPe2hf4Pj-5CmHww==.AQAB.Lgy_yL3hsLBngkFdDw1Jy9TmSRMiH6yihYetQ8jy-jZXdsZXd8V5ub3kuBHHk4M39i3TduIkcrjcsiWQb77D8Q==
Run Code Online (Sandbox Code Playgroud)
...到Crypt :: RSA对象.我已经拆分了组件,所以我有$ mod,$ exp和$ private_exp,但perl Crypt :: RSA API似乎没有办法明确设置.
制定了在IRC上,这里记录它为世界各地的:它是完全没有证件,但Crypt::RSA::Key 也有方法叫n,e以及d对应于模量,公开指数,以及私人指数.在检查功能模错误(这是假设,如果工作p和q不可用,但n是,但实际上并非如此),它可以创建这些方法的工作重点.
我们通过Crypt::RSA::Key::Private使用工厂方法创建子类来解决问题,该方法解码base64编码(使用MIME :: Base64 :: URLSafe)和附加二进制编码(使用Math :: BigInt - > from_hex和unpack "H*"),然后设置这三个私人成员,Crypt::RSA模块能够接受它作为密钥.
| 归档时间: |
|
| 查看次数: |
2832 次 |
| 最近记录: |