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
    // ასიმეტრიული კოდირების მაგალითი (სადავო, მხოლოდ დემონსტრაციისთვის)
    // პრაქტიკაში გამოიყენება 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 პროტოკოლებში ვებგვერდებზე.