Я видел этот код:
<?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 ответ
Ключи должны быть сгенерированы вместе, поскольку открытый ключ является «несекретным» ключом, который может шифровать информацию, так что только частный ключ может ее расшифровать. Это пример криптографии с открытым ключом.
В случае сбоя openssl_pkey_new (он не вернет сам ключ, а только ресурс, который вы можете использовать для получения фактических ключей), см. примеры и ссылки на альтернативы в разделе комментариев на странице руководства.
И нет, ключи не должны кодироваться в формате base64. Это делается только с зашифрованными данными в ваших методах. Причина, по которой это делается в классе, вероятно, состоит в том, что первоначальный автор хотел передать зашифрованные данные через какую-то небезопасную для двоичного кода среду.
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.