在 PHP 中使用 RSA 加密和解密文本

2022-08-30 10:59:30

PHP 5.3 是否有任何类提供不填充的 RSA 加密/解密?

我有私钥和公钥,p,q和模数。


答案 1

您可以使用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();
?>

答案 2

安全警告:此代码片段容易受到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;
    }
}

推荐