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 պրոտոկոլներում։