Jak šifrovat a dešifrovat řetězec v PHP?

Jak Sifrovat A Desifrovat Retezec V Php



Šifrování je proces převodu dat do tajného kódu nebo formátu, který není srozumitelný každému, kdo nemá klíč k jeho dekódování. Dešifrování je postup pro převzetí těchto informací a jejich vrácení do původního, čitelného formátu. V PHP, šifrování, a dešifrování lze použít k ochraně citlivých dat, jako jsou hesla, informace o kreditních kartách a další osobní údaje.

The šifrování algoritmus by měl přijmout řetězec dat, která chcete zašifrovat, a použít k zašifrování dat vybranou metodu šifrování. Algoritmus by pak měl vrátit zašifrovaná data ve formátu, který můžete uložit do databáze nebo souboru.

Na dešifrovat data, měli byste k dešifrování dat použít stejnou metodu šifrování, která byla použita k jejich zašifrování. To znamená, že budete muset klíč někde uložit, abyste jej mohli později použít k dekódování dat.







Jak zašifrovat a dešifrovat řetězec PHP?

Řetězec PHP může být zašifrované a dešifrovat za použití openssl_encrpyt() a openssl_decrypt() metod, resp.



Zašifrujte řetězec pomocí funkce openssl_encrypt().

Na zašifrovat řetězec v PHP pomocí openssl_encrypt() musíte zadat řetězec prostého textu, metodu šifrování a klíč. Funkce vrátí zašifrovaná data, která pak můžete bezpečně uložit nebo přenést.



Syntaxe pro openssl_encrypt() metoda je:





řetězec openssl_encrypt ( tětiva $data , tětiva $metoda , tětiva $klíč , $options = 0 , tětiva $iv , tětiva $tag = NULA , tětiva $ vás , int $tag_length = 16 )
  • $data: Řetězec nebo data, která chcete zašifrovat.
  • $method: Způsob šifrování nebo šifra, kterou chcete použít. Seznam podporovaných šifrovacích metod můžete získat pomocí openssl_get_cipher_methods()
  • $klíč: Šifrovací klíč, který bude použit k šifrování dat. Měl by to být řetězec vhodné délky a náhodnosti na základě zvolené šifrovací metody.
  • $options: Volitelný parametr, který může obsahovat další příznaky pro konkrétní možnosti šifrování. Příznaky můžete kombinovat pomocí bitově NEBO (|) Mezi běžné příznaky patří OPENSSL_RAW_DATA a OPENSSL_ZERO_PADDING .
  • $iv: Inicializační vektor (iv) použitý pro šifrování; měla by to být náhodná a jedinečná hodnota poskytnutá jako řetězec.
  • $tag: Volitelný parametr používaný pro šifrovací režimy AEAD (Authenticated Encryption with Associated Data), jako je GCM (Galois/Counter Mode) nebo CCM (Counter s CBC-MAC). Ukládá ověřovací značku vygenerovanou během šifrování.
  • vaše: Další ověřená data, která lze použít pro šifrovací režimy AEAD.
  • $tag_length: Délka autentizační značky. V režimu GCM se délka tagu pohybuje od 4 do 16 bajtů.

Například:


$simple_string = „Vítejte v Linuxhintu \n ' ;
echo 'Původní řetězec:' . $simple_string ;
$šifrování = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $šifrování ) ;
$options = 0 ;
$encryption_iv = '1234567891011121' ;
$šifrovací_klíč = 'linux' ;
$šifrování = openssl_encrypt ( $simple_string , $šifrování ,
$šifrovací_klíč , $options , $encryption_iv ) ;
echo 'Šifrovaný řetězec:' . $šifrování . ' \n ' ;
?>

Kód nejprve deklaruje základní text “Vítejte v Linuxhint” a použije k tomu příkaz echo. Poté specifikuje šifrovací algoritmus, který se má použít, AES-128-CTR . Používá také openssl_cipher_iv_length() funkce pro výpočet velikosti inicializační vektor (IV) potřebné pro tuto šifru.



Kód nastavuje šifrování iv hodnotu k „1234567891011121“ a šifrovací klíč k 'Linux' . Šifrovaný řetězec se poté zobrazí pomocí příkazu echo, jakmile je šifrování dokončeno pomocí openssl_encrypt() funkce. Kvůli náhodnému inicializačnímu vektoru použitému pro šifrování se bude konečný zašifrovaný řetězec pokaždé lišit.

Dešifrování řetězce pomocí funkce openssl_decrypt().

Chcete-li dešifrovat řetězec v PHP, můžete použít openssl_decrypt() funkce. Tato funkce bere zašifrovaná data, metodu šifrování a klíč jako vstupy a vrací dešifrovaný prostý text.

Syntaxe pro openssl_decrypt() metoda je:

řetězec openssl_decrypt ( tětiva $data , tětiva $metoda , tětiva $klíč , int $options = 0 , tětiva $iv , tětiva $tag , tětiva $ vás )

Argumenty předané funkci jsou:

  • $data: Šifrovaný řetězec nebo data, která chcete dešifrovat.
  • $method: Šifrovací metoda nebo šifra použitá během šifrování. Seznam podporovaných šifrovacích metod můžete získat pomocí openssl_get_cipher_methods()
  • $klíč: Šifrovací klíč, který byl použit k šifrování dat. Měl by odpovídat klíči použitému při šifrování.
  • $options: Volitelný parametr, který může obsahovat další příznaky pro konkrétní možnosti dešifrování. Příznaky můžete kombinovat pomocí bitového operátoru OR (|). Mezi běžné příznaky patří OPENSSL_RAW_DATA a OPENSSL_ZERO_PADDING .
  • $iv: The inicializační vektor (IV) používané během šifrování. Mělo by to být stejné IV, které bylo použito během šifrování a předáno jako řetězec.
  • $tag: Ověřovací značka pro šifrovací režimy AEAD (Authenticated Encryption with Associated Data), jako je GCM (Galois/Counter Mode) nebo CCM (Counter s CBC-MAC). Pokud se ověření nezdaří, openssl_decrypt() vrátí hodnotu FALSE.
  • vaše: Další ověřená data, která byla použita během šifrování pro režimy šifry AEAD.

Návratová hodnota: V případě úspěchu vrátí dešifrovaný řetězec; jinak vrátí FALSE.

Například:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
echo 'Šifrovaný řetězec:' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$šifrování = 'AES-128-CTR' ;
$options = 0 ;
$decryption_key = 'linux' ;
$dešifrování = openssl_decrypt ( $encrypted_string , $šifrování ,
$decryption_key , $options , $decryption_iv ) ;
echo 'Dešifrovaný řetězec:' . $dešifrování ;
?>

Délka vektoru v tomto kódu se vypočítá pomocí openssl_cipher_iv_length() Během šifrování se používají stejné parametry šifrování iv a klíčové parametry. Šifrovací algoritmus je definován jako AES-128-CTR .

Dříve zašifrovaný řetězec je dešifrován pomocí šifrovacího algoritmu, šifrovacího klíče, nastavení a hodnot IV pomocí openssl_decrypt() funkce. Výsledný dešifrovaný text se pak zobrazí pomocí příkazu echo.

Závěr

Tvorba webových stránek často obnáší šifrování a dešifrování data. Použitím šifrování k ochraně citlivých dat se můžete vyhnout tomu, abyste své uživatele vystavili krádeži identity, podvodům a dalším bezpečnostním hrozbám. Řetězce v PHP lze pomocí funkcí šifrovat a dešifrovat openssl_encrypt() a openssl_decrypt() funkcí. Pečlivým používáním šifrovacího algoritmu a klíče můžete vytvořit robustní a bezpečný systém pro manipulaci s citlivými daty ve vašich aplikacích PHP.