Назад к вопросам
Intern
94
questionbank

Что такое шифрование?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Шифрование - это процесс преобразования читаемой информации (открытого текста) в нечитаемый формат (шифротекст) с помощью криптографического алгоритма и ключа. Цель - обеспечить конфиденциальность данных, чтобы только авторизованные лица могли их прочитать, используя соответствующий ключ для расшифровки.

Существует два основных типа шифрования:

  1. Симметричное шифрование: Используется один и тот же ключ как для шифрования, так и для расшифровки. Скорость высокая, но проблема в безопасной передаче ключа. Примеры: AES, DES.

    <?php
    // Пример симметричного шифрования (упрощенный, только для демонстрации концепции)
    $key = 'ключ123';
    $plaintext = 'Секретное сообщение';
    
    // Предполагаем простую функцию шифрования (не использовать в продакшене)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // Пример операции XOR
    }
    
    // Предполагаем простую функцию расшифровки (не использовать в продакшене)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // Пример операции XOR
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Зашифровано: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Расшифровано: " . $decryptedtext . "\n";
    ?>
    
  2. Асимметричное шифрование (шифрование с открытым ключом): Используется пара ключей: открытый ключ для шифрования и закрытый (приватный) ключ для расшифровки. Открытый ключ может быть распространен свободно, а закрытый ключ хранится в секрете. Скорость ниже, чем у симметричного. Примеры: RSA, ECC.

    <?php
    // Пример асимметричного шифрования (упрощенный, только для демонстрации концепции RSA)
    // На практике используются функции PHP для OpenSSL (openssl_public_encrypt, openssl_private_decrypt и т.д.)
    
    // Генерация ключей (сложный процесс)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Другое секретное сообщение';
    
    // Шифрование открытым ключом
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Зашифровано (асимметрично): " . base64_encode($ciphertext) . "\n";
    
    // Расшифровка закрытым ключом
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Расшифровано (асимметрично): " . $decryptedtext . "\n";
    
    // В реальном коде использовались бы функции OpenSSL
    ?>
    

Шифрование применяется для защиты данных при хранении (encryption at rest) и при передаче (encryption in transit), например, в SSL/TLS протоколах веб-сайтов.