Я видел этот код:

<?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

php
2
user4951 18 Дек 2012 в 13:10
Это конкретный сценарий или ваша собственная работа?
 – 
Moseleyi
18 Дек 2012 в 13:12
3
Откуда у тебя этот код?
 – 
GBD
18 Дек 2012 в 13:13
Я получил это из stackoverflow. Я учусь.
 – 
user4951
18 Дек 2012 в 13:43
Я сказал, что видел код. Нет, я этого не писал.
 – 
user4951
18 Дек 2012 в 13:43
Я просто хочу использовать простой приватный и публичный. Не нужно ничего сложного.
 – 
user4951
18 Дек 2012 в 14:44

1 ответ

Лучший ответ

Ключи должны быть сгенерированы вместе, поскольку открытый ключ является «несекретным» ключом, который может шифровать информацию, так что только частный ключ может ее расшифровать. Это пример криптографии с открытым ключом.

В случае сбоя openssl_pkey_new (он не вернет сам ключ, а только ресурс, который вы можете использовать для получения фактических ключей), см. примеры и ссылки на альтернативы в разделе комментариев на странице руководства.

И нет, ключи не должны кодироваться в формате base64. Это делается только с зашифрованными данными в ваших методах. Причина, по которой это делается в классе, вероятно, состоит в том, что первоначальный автор хотел передать зашифрованные данные через какую-то небезопасную для двоичного кода среду.

2
MatsLindh 18 Дек 2012 в 14:11