如何在PhP中生成包含私钥和公钥的字符串?

时间:2012-12-18 09:10:35

标签: php

我看到了这段代码:

<?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_64encoded还是不?我如何生成一个?

我补充说:

$privKey = openssl_pkey_new();

我得到的只是$ privKey == false

1 个答案:

答案 0 :(得分:2)

密钥必须一起生成,因为公钥是“非秘密”密钥,可以加密信息,以便只有私钥才能解密。这是Public-key cryptography的一个例子。

如果openssl_pkey_new失败(它不会返回密钥本身,只返回可用于检索实际密钥的资源),请参阅手册页注释部分的examples and links to alternatives

不,密钥不应该基于64位编码。这仅适用于方法中的加密数据。这是在课堂上完成的原因可能是因为原作者希望通过某种非二进制安全环境传输加密数据。