Sobes.tech
Intern

Какво е криптиране?

sobes.tech AI

Отговор от 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 протоколи на уебсайтове.