Php RSA模数和指数转换为OpenSSL pem格式
我有以下格式的RSA公钥:Php RSA模数和指数转换为OpenSSL pem格式,php,rsa,Php,Rsa,我有以下格式的RSA公钥: OpenSSLRSAPublicKey{modulus=9ee9f82dd8429d9fa7f091c1d375b9c289bcf2c39ec57e175a2998b4bdd083465ef0fe6c7955c821b7e883929d017a9164a60290f1622f664a72096f5d2ffda7c7825c3d657c2d13d177445fa6cdd5d68b96346006a96040f5b09baae56d0c3efeaa77d57602f690
OpenSSLRSAPublicKey{modulus=9ee9f82dd8429d9fa7f091c1d375b9c289bcf2c39ec57e175a2998b4bdd083465ef0fe6c7955c821b7e883929d017a9164a60290f1622f664a72096f5d2ffda7c7825c3d657c2d13d177445fa6cdd5d68b96346006a96040f5b09baae56d0c3efeaa77d57602f69018f5cefd60cb5c71b6b6f8a4b0472e8740367266917d8c13,publicExponent=10001}
我有模量和指数。
如何将其转换为PHP中的openssl\u encrypt()
所接受的格式?
我在谷歌上搜索过,没有找到什么好东西。难道没有一种简单的方法来格式化它吗?不,没有任何方法可以做到这一点。公钥/私钥只能用于非对称加密
openssl\u encrypt()
需要对称加密
非对称加密所需的openssl\u public\u encrypt()需要一个公钥资源。这可以使用openssl\u pkey\u get\u public()
获得
现在,openssl\u pkey\u get\u public()
需要一个PEM文件。报告内容如下:
- rawrsa()
基本上,您需要创建一个“ASN1格式的文本文件”并使用一些openssl命令。假设您指的是
openssl\u public\u encrypt()
而不是openssl\u encrypt()
,然后尝试此操作(使用phpseclib 1.0):
你的指数中似乎有一个太多的零(1048577对65537),除非我遗漏了什么。我正在用phpseclib 1.0尝试它,因为2.0并不真的想在我的机器上工作。问题是每次我用相同的mod和exponent@Introser-密文每次都应该是不同的。引用,其中一个步骤是“生成长度为k-mLen-3的八位元字符串PS,由伪随机生成的非零八位元组成”。这样做是为了防止已知的明文攻击。@Introser-我已经更新了我的帖子,使用phpseclib 1.0代码。
<?php
include('Crypt/RSA.php')
include('Math/BigInteger.php');
$rsa = new Crypt_RSA();
$rsa->loadKey(array(
'n' => new Math_BigInteger('9ee9f82dd8429d9fa7f091c1d375b9c289bcf2c39ec57e175a2998b4bdd083465ef0fe6c7955c821b7e883929d017a9164a60290f1622f664a72096f5d2ffda7c7825c3d657c2d13d177445fa6cdd5d68b96346006a96040f5b09baae56d0c3efeaa77d57602f69018f5cefd60cb5c71b6b6f8a4b0472e8740367266917d8c13', 16),
'e' => new Math_BigInteger('10001', 16)
));
echo $rsa;
//$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$rsa->encrypt('plaintext');