Sobes.tech
Intern

Шта је шифровање?

sobes.tech АИ

Одговор од АИ

Šifrovanje je proces pretvaranja čitljive informacije (otvoreni tekst) u nečitljiv format (šifrovani tekst) uz pomoć kriptografskog algoritma i ključa. Cilj je obezbediti poverljivost podataka, tako da ih mogu čitati samo ovlašćena lica koristeći odgovarajući ključ za dešifrovanje.

Postoje dve osnovne vrste šifrovanja:

  1. Simetrično šifrovanje: Koristi se isti ključ za šifrovanje i dešifrovanje. Brzo je, ali je problem siguran prenos ključa. Primeri: AES, DES.

    <?php
    // Primer simetričnog šifrovanja ( pojednostavljeno, samo za demonstraciju)
    $key = 'ključ123';
    $plaintext = 'Tajna poruka';
    
    // Pretpostavljamo jednostavnu funkciju šifrovanja (ne za produkciju)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // Primer XOR operacije
    }
    
    // Pretpostavljamo jednostavnu funkciju dešifrovanja (ne za produkciju)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // Primer XOR operacije
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Šifrovani tekst: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Dešifrovani tekst: " . $decryptedtext . "\n";
    ?>
    
  2. Asimetrično šifrovanje (šifrovanje sa javnim ključem): Koristi par ključeva: javni ključ za šifrovanje i privatni (privatni) ključ za dešifrovanje. Javni ključ može biti slobodno distribuiran, a privatni ključ se čuva u tajnosti. Brzina je niža nego kod simetričnog. Primeri: RSA, ECC.

    <?php
    // Primer asimetričnog šifrovanja ( pojednostavljeno, samo za demonstraciju RSA)
    // U praksi se koriste PHP funkcije za OpenSSL (openssl_public_encrypt, openssl_private_decrypt i dr.)
    
    // Generisanje ključeva (složen proces)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Druga tajna poruka';
    
    // Šifrovanje javnim ključem
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Šifrovani (asimetrični) tekst: " . base64_encode($ciphertext) . "\n";
    
    // Dešifrovanje privatnim ključem
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Dešifrovani (asimetrični) tekst: " . $decryptedtext . "\n";
    
    // U stvarnom kodu bi se koristile OpenSSL funkcije
    ?>
    

Šifrovanje se koristi za zaštitu podataka pri skladištenju (encryption at rest) i prenosu (encryption in transit), na primer u SSL/TLS protokolima veb sajtova.