Sobes.tech
Intern

Mis on krüpteerimine?

sobes.tech AI

Vastus AI-lt

Krüptimine on protsess, mille käigus muudetakse loetav teave (avatekst) loetamatuks vorminguks (krüpteeritud tekst) krüptograafilise algoritmi ja võtme abil. Eesmärk on tagada andmete konfidentsiaalsus, nii et ainult volitatud isikud saaksid neid lugeda, kasutades sobivat võtit dekrüpteerimiseks.

On kaks peamist tüüpi krüptimist:

  1. Sümeetriline krüptimine: kasutatakse sama võtit nii krüpteerimiseks kui ka dekrüpteerimiseks. Kiire, kuid on turvalisuse probleem võtme turvalise edastamisega. Näited: AES, DES.

    <?php
    // Näide sümmeetrilisest krüptimisest (lihtsustatud, ainult demonstratsiooniks)
    $key = 'võti123';
    $plaintext = 'Salajane sõnum';
    
    // Lihtne krüpteerimisfunktsioon (ärge kasutage tootmises)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // XOR operatsioon
    }
    
    // Lihtne dekrüpteerimisfunktsioon (ärge kasutage tootmises)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // XOR operatsioon
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Krüpteeritud: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Dekrüpteeritud: " . $decryptedtext . "\n";
    ?>
    
  2. Asümmeetriline krüptimine (avaliku võtmega krüptimine): kasutatakse kahte võtit: avalik võti krüpteerimiseks ja privaatne (salajane) võti dekrüpteerimiseks. Avalik võti võib olla vabalt levitatav, privaatne võti hoitakse salajas. Kiirus on madalam kui sümmeetrilisel. Näited: RSA, ECC.

    <?php
    // Näide asümmeetrilisest krüptimisest (lihtsustatud, ainult demonstratsiooniks)
    // Praktikas kasutatakse PHP funktsioone OpenSSL jaoks (openssl_public_encrypt, openssl_private_decrypt ja s.t.)
    
    // Võtmete genereerimine (keeruline protsess)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Teine salajane sõnum';
    
    // Krüpteerimine avaliku võtmega
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Krüpteeritud (asümmeetriline): " . base64_encode($ciphertext) . "\n";
    
    // Dešifreerimine privaatse võtmega
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Dešifreeritud (asümmeetriline): " . $decryptedtext . "\n";
    
    // Reaalses koodis kasutataks OpenSSL funktsioone
    ?>
    

Krüptimine kasutatakse andmete kaitsmiseks salvestamisel (encryption at rest) ja edastamisel (encryption in transit), näiteks SSL/TLS protokollides veebisaitidel.