Sobes.tech
Intern

Czym jest szyfrowanie?

sobes.tech AI

Odpowiedź od AI

Szyfrowanie to proces przekształcania czytelnych informacji (tekst jawny) w nieczytelny format (tekst zaszyfrowany) za pomocą algorytmu kryptograficznego i klucza. Celem jest zapewnienie poufności danych, tak aby tylko uprawnione osoby mogły je odczytać, używając odpowiedniego klucza do odszyfrowania.

Istnieją dwa główne typy szyfrowania:

  1. Szyfrowanie symetryczne: Używa tego samego klucza zarówno do szyfrowania, jak i do odszyfrowania. Prędkość jest wysoka, ale problemem jest bezpieczna transmisja klucza. Przykłady: AES, DES.

    <?php
    // Przykład symetrycznego szyfrowania (uproszczony, tylko do celów demonstracyjnych)
    $key = 'klucz123';
    $plaintext = 'Sekretna wiadomość';
    
    // Zakładamy prostą funkcję szyfrowania (nie do użycia w produkcji)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // Przykład operacji XOR
    }
    
    // Zakładamy prostą funkcję deszyfrowania (nie do użycia w produkcji)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // Przykład operacji XOR
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Zaszyfrowane: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Odszyfrowane: " . $decryptedtext . "\n";
    ?>
    
  2. Szyfrowanie asymetryczne (szyfrowanie kluczem publicznym): Używa pary kluczy: klucza publicznego do szyfrowania i klucza prywatnego do odszyfrowania. Klucz publiczny może być swobodnie rozpowszechniany, a klucz prywatny jest utrzymywany w tajemnicy. Prędkość jest niższa niż w przypadku szyfrowania symetrycznego. Przykłady: RSA, ECC.

    <?php
    // Przykład szyfrowania asymetrycznego (uproszczony, do demonstracji RSA)
    // W praktyce używa się funkcji PHP dla OpenSSL (openssl_public_encrypt, openssl_private_decrypt itd.)
    
    // Generacja kluczy (złożony proces)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Inna tajna wiadomość';
    
    // Szyfrowanie kluczem publicznym
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Szyfrowanie asymetryczne: " . base64_encode($ciphertext) . "\n";
    
    // Deszyfrowanie kluczem prywatnym
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Odszyfrowanie asymetryczne: " . $decryptedtext . "\n";
    
    // W rzeczywistym kodzie używałoby się funkcji OpenSSL
    ?>
    

Szyfrowanie jest stosowane do ochrony danych podczas przechowywania (encryption at rest) i podczas przesyłania (encryption in transit), na przykład w protokołach SSL/TLS na stronach internetowych.