在 PHP 中使用 RSA 加密和解密文本
PHP 5.3 是否有任何类提供不填充的 RSA 加密/解密?
我有私钥和公钥,p,q和模数。
您可以使用phpseclib,一个纯PHP RSA实现:
<?php
include('Crypt/RSA.php');
$privatekey = file_get_contents('private.key');
$rsa = new Crypt_RSA();
$rsa->loadKey($privatekey);
$plaintext = new Math_BigInteger('aaaaaa');
echo $rsa->_exponentiate($plaintext)->toBytes();
?>
安全警告:此代码片段容易受到Bleichenbacher 1998年填充预言机攻击的攻击。请参阅此答案以获得更好的安全性。
class MyEncryption
{
public $pubkey = '...public key here...';
public $privkey = '...private key here...';
public function encrypt($data)
{
if (openssl_public_encrypt($data, $encrypted, $this->pubkey))
$data = base64_encode($encrypted);
else
throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');
return $data;
}
public function decrypt($data)
{
if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))
$data = $decrypted;
else
$data = '';
return $data;
}
}