Sobes.tech
Intern

Co je šifrování?

sobes.tech AI

Odpověď od AI

Šifrování je proces převodu čitelné informace (otevřeného textu) do nečitelných formátů (šifrovaného textu) pomocí kryptografického algoritmu a klíče. Cílem je zajistit důvěrnost dat, aby je mohli číst pouze autorizovaní uživatelé s odpovídajícím klíčem pro dešifrování.

Existují dva hlavní typy šifrování:

  1. Symetrické šifrování: Používá stejný klíč jak pro šifrování, tak pro dešifrování. Rychlost je vysoká, ale problémem je bezpečný přenos klíče. Příklady: AES, DES.

    <?php
    // Příklad symetrického šifrování (zjednodušené, pouze pro demonstrační účely)
    $key = 'klíč123';
    $plaintext = 'Tajná zpráva';
    
    // Předpokládáme jednoduchou šifrovací funkci (nepoužívejte v produkci)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // Příklad XOR operace
    }
    
    // Předpokládáme jednoduchou dešifrovací funkci (nepoužívejte v produkci)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // Příklad XOR operace
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Zašifrováno: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Dešifrováno: " . $decryptedtext . "\n";
    ?>
    
  2. Asymetrické šifrování (šifrování s veřejným klíčem): Používá dvojici klíčů: veřejný klíč pro šifrování a soukromý (privátní) klíč pro dešifrování. Veřejný klíč může být volně distribuován, zatímco soukromý klíč je uchováván v tajnosti. Rychlost je nižší než u symetrického. Příklady: RSA, ECC.

    <?php
    // Příklad asymetrického šifrování (zjednodušené, pouze pro demonstrační účely RSA)
    // V praxi se používají PHP funkce pro OpenSSL (openssl_public_encrypt, openssl_private_decrypt apod.)
    
    // Generování klíčů (složitý proces)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Jiná tajná zpráva';
    
    // Šifrování veřejným klíčem
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Zašifrováno (asymetricky): " . base64_encode($ciphertext) . "\n";
    
    // Dešifrování soukromým klíčem
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Dešifrováno (asymetricky): " . $decryptedtext . "\n";
    
    // Ve skutečném kódu by se používaly funkce OpenSSL
    ?>
    

Šifrování se používá k ochraně dat při ukládání (encryption at rest) a při přenosu (encryption in transit), například v protokolech SSL/TLS webových stránek.