如何在php中使用私钥和公钥加密和解密大字符串?

时间:2013-10-22 07:39:40

标签: php openssl php-openssl

我想使用公钥加密大字符串并存储在文件中。然后读取文件的内容并使用私钥解密。 我怎样才能做到这一点。 php中是否有任何默认函数或代码。

3 个答案:

答案 0 :(得分:0)

检查PHP的OPENSSL文档,因为您需要知道如何处理PKI。你会在那里找到你需要的所有信息。

Here is the link

答案 1 :(得分:0)

您想要加密的文字有多大?您不能在RSA中使用大于密钥长度(即模数)的明文。在这些情况下最常做的是加密对称密码密钥,然后用该密钥加密明文。

PHP的openssl_seal()openssl_open()函数(假设您已安装openssl扩展)使用RC4密码执行此操作。

答案 2 :(得分:-1)

您可以使用Zend Framework 2(Zend \ Crypt \ PublicKey)

执行此操作

ZF2 : Public key cryptography

示例(来自上面链接的文档!)

use Zend\Crypt\PublicKey\Rsa;

$rsa = Rsa::factory(array(
    'public_key'    => 'public_key.pub',
    'private_key'   => 'private_key.pem',
    'pass_phrase'   => 'test',
    'binary_output' => false
));

$text = 'This is the message to encrypt';

$encrypt = $rsa->encrypt($text);
printf("Encrypted message:\n%s\n", $encrypt);

$decrypt = $rsa->decrypt($encrypt);

if ($text !== $decrypt) {
    echo "ERROR\n";
} else {
    echo "Encryption and decryption performed successfully!\n";
}

(编辑:添加到代码中的空格)