Košík je prázdný

PHP OpenSSL je rozšíření, které umožňuje použití šifrovacích funkcí na základě knihovny OpenSSL. Toto rozšíření je široce využívané pro zabezpečení dat, vytváření digitálních certifikátů a hashování. Níže je přehled základních kroků a příkladů, jak používat PHP OpenSSL pro různé šifrovací úkony.

Jak povolit PHP OpenSSL

Než začneme používat PHP OpenSSL, musíte se ujistit, že rozšíření je ve vašem prostředí nainstalováno a povoleno. Můžete to zkontrolovat následujícím příkazem:

<?php
phpinfo();
?>
    

Vyhledejte sekci OpenSSL. Pokud zde není, budete muset doinstalovat rozšíření. Na serverech běžících na systémech Linux to může být provedeno například příkazem:

sudo apt-get install php-openssl
    

Šifrování pomocí symetrického klíče

Symetrické šifrování je proces, kdy je pro šifrování a dešifrování použit stejný klíč. PHP OpenSSL nabízí jednoduché metody pro šifrování a dešifrování s využitím algoritmů jako AES.

Krok 1: Definování šifrovacího algoritmu, klíče a inicializačního vektoru (IV):

<?php
$data = "Tajná zpráva";
$key = "tajny_klic";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$cipher_method = 'aes-256-cbc';
?>
    

Krok 2: Šifrování dat:

<?php
$encrypted_data = openssl_encrypt($data, $cipher_method, $key, 0, $iv);
?>
    

Krok 3: Dešifrování dat:

<?php
$decrypted_data = openssl_decrypt($encrypted_data, $cipher_method, $key, 0, $iv);
?>
    

Asymetrické šifrování pomocí veřejného a soukromého klíče

Asymetrické šifrování využívá pár klíčů – veřejný a soukromý. Data šifrovaná veřejným klíčem lze dešifrovat pouze soukromým klíčem a naopak.

Krok 1: Generování klíčového páru:

<?php
$config = array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);

$res = openssl_pkey_new($config);
openssl_pkey_export($res, $priv_key);
$pub_key = openssl_pkey_get_details($res)['key'];
?>
    

Krok 2: Šifrování dat veřejným klíčem:

<?php
$public_key = openssl_pkey_get_public($pub_key);
openssl_public_encrypt($data, $encrypted_data, $public_key);
?>
    

Krok 3: Dešifrování dat soukromým klíčem:

<?php
$private_key = openssl_pkey_get_private($priv_key);
openssl_private_decrypt($encrypted_data, $decrypted_data, $private_key);
?>
    

Digitální podpisy pomocí OpenSSL

Digitální podpisy zajišťují integritu dat a ověřují identitu odesílatele. Následující kroky ukazují, jak podepsat zprávu a ověřit podpis pomocí PHP OpenSSL.

Krok 1: Vytvoření digitálního podpisu:

<?php
openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);
?>
    

Krok 2: Ověření podpisu:

<?php
$verification = openssl_verify($data, $signature, $public_key, OPENSSL_ALGO_SHA256);
?>
    

Pokud vrátí hodnota $verification 1, je podpis platný. Pokud vrátí 0, podpis je neplatný.

Práce s certifikáty

OpenSSL umožňuje pracovat s X.509 certifikáty, které jsou klíčové pro zabezpečení komunikace na internetu, zejména v HTTPS.

Krok 1: Načtení certifikátu:

<?php
$cert = file_get_contents('cert.pem');
?>
    

Krok 2: Získání informací z certifikátu:

<?php
$cert_info = openssl_x509_parse($cert);
?>
    

Krok 3: Ověření certifikátu:

<?php
$public_key_from_cert = openssl_pkey_get_public($cert);
$cert_verification = openssl_x509_check_private_key($cert, $private_key);
?>
    

Závěr

PHP OpenSSL je velmi mocným nástrojem pro práci s šifrováním, dešifrováním, digitálními podpisy a certifikáty. Znalost základních operací jako symetrické a asymetrické šifrování nebo práce s certifikáty je klíčová pro bezpečnou práci s daty.