2

我看到了这段代码:

<?php
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;
    }
}


?>

什么是 public_key 的样本?什么样的公钥应该放在 $pubkey 上?它应该是base_64编码还是不?如何生成一个?

我补充说:

$privKey = openssl_pkey_new();

我得到的只是 $privKey==false

4

1 回答 1

2

密钥必须一起生成,因为公钥是可以加密信息的“非秘密”密钥,因此只有私钥才能解密它。这是公钥密码术的一个例子。

如果 openssl_pkey_new 失败(它不会返回密钥本身,只会返回可用于检索实际密钥的资源),请参阅手册页注释部分中的示例和替代方案链接。

不,密钥不应该是 base64 编码的。这仅适用于您方法中的加密数据。在课堂上这样做的原因可能是因为原作者想通过某种非二进制安全环境传输加密数据。

于 2012-12-18T10:11:19.770 回答