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í:
-
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"; ?> -
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.