Зашифруйте и дешифруйте строку с ключевым PHP [дубликат]

6
задан skaffman 10 May 2010 в 21:48
поделиться

4 ответа

Начните с этого: http://www.ibm.com/developerworks/opensource/library/os-php-encrypt/

После этого посмотрите ответ Паскаля МАРТИНА в Как зашифровать строку в PHP?

3
ответ дан 10 December 2019 в 02:43
поделиться

вы пробовали mcrypt?

2
ответ дан 10 December 2019 в 02:43
поделиться

Базовая реализация openssl, которую я использовал раньше:

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

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

4
ответ дан 10 December 2019 в 02:43
поделиться

Полагаю, вы имели в виду шифрование симметричным ключом. mcrypt действительно поддерживает несколько алгоритмов (например, AES, Tripel DES). Но есть одна загвоздка, он не поддерживает алгоритм вставки, поэтому вы не сможете вернуть исходную длину. У вас есть 2 варианта, как обойти эту проблему:

  1. Добавьте поле длины перед чистым текстом. Скажем, использовать первые 4 байта в качестве длины.

  2. Сделать PKCS#5 padding самостоятельно. Примеры кода есть на этой странице: http://www.php.net/manual/en/function.mcrypt-encrypt.php

0
ответ дан 10 December 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: