Ako šifrovať a dešifrovať reťazec v PHP?

Ako Sifrovat A Desifrovat Retazec V Php



Šifrovanie je proces prevodu údajov do tajného kódu alebo formátu, ktorý nie je zrozumiteľný pre každého, kto nemá kľúč na jeho dekódovanie. Dešifrovanie je postup na získanie týchto informácií a ich vrátenie do pôvodného, ​​čitateľného formátu. V PHP, šifrovanie, a dešifrovanie možno použiť na ochranu citlivých údajov, ako sú heslá, informácie o kreditných kartách a iné osobné údaje.

The šifrovanie Algoritmus by mal prijať reťazec údajov, ktoré chcete zašifrovať, a na zašifrovanie údajov použiť zvolenú metódu šifrovania. Algoritmus by potom mal vrátiť zašifrované údaje vo formáte, ktorý môžete uložiť do databázy alebo súboru.

Komu dešifrovať údaje, mali by ste použiť rovnakú metódu šifrovania na dešifrovanie údajov, ktorá bola použitá na ich šifrovanie. To znamená, že kľúč budete musieť niekde uložiť, aby ste ho neskôr mohli použiť na dekódovanie údajov.







Ako zašifrovať a dešifrovať reťazec PHP?

Reťazec PHP môže byť zašifrované a dešifrované pomocou: the openssl_encrpyt() a openssl_decrypt() metódy, resp.



Zašifrujte reťazec pomocou funkcie openssl_encrypt().

Komu zašifrovať reťazec v PHP pomocou openssl_encrypt() musíte zadať reťazec otvoreného textu, metódu šifrovania a kľúč. Funkcia vráti zašifrované údaje, ktoré potom môžete bezpečne uložiť alebo preniesť.



Syntax pre openssl_encrypt() metóda je:





reťazec openssl_encrypt ( reťazec $data , reťazec $metóda , reťazec $kľúč , $options = 0 , reťazec $iv , reťazec $tag = NULOVÝ , reťazec $ vás , int $tag_length = 16 )
  • $data: Reťazec alebo údaje, ktoré chcete zašifrovať.
  • $method: Spôsob šifrovania alebo šifra, ktorú chcete použiť. Zoznam podporovaných metód šifrovania môžete získať pomocou openssl_get_cipher_methods()
  • $key: Šifrovací kľúč, ktorý sa použije na šifrovanie údajov. Mal by to byť reťazec primeranej dĺžky a náhodnosti na základe zvolenej šifrovacej metódy.
  • $options: Voliteľný parameter, ktorý môže obsahovať ďalšie príznaky pre konkrétne možnosti šifrovania. Vlajky môžete kombinovať pomocou bitové ALEBO (|) Medzi bežné vlajky patrí OPENSSL_RAW_DATA a OPENSSL_ZERO_PADDING .
  • $iv: Inicializačný vektor (iv) použitý na šifrovanie; mala by to byť náhodná a jedinečná hodnota poskytnutá ako reťazec.
  • $tag: Voliteľný parameter používaný pre šifrovacie režimy AEAD (Authenticated Encryption with Associated Data), ako je GCM (Galois/Counter Mode) alebo CCM (Counter with CBC-MAC). Ukladá autentifikačnú značku vygenerovanú počas šifrovania.
  • Váš: Ďalšie overené údaje, ktoré možno použiť pre režimy šifry AEAD.
  • $tag_length: Dĺžka autentifikačnej značky. V režime GCM sa dĺžka značky pohybuje od 4 do 16 bajtov.

Napríklad:


$simple_string = „Vitajte v Linuxhint \n ' ;
ozvena 'Originálny reťazec:' . $simple_string ;
$ciphering = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $ciphering ) ;
$options = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'linux' ;
$šifrovanie = openssl_encrypt ( $simple_string , $ciphering ,
$encryption_key , $options , $encryption_iv ) ;
ozvena 'Šifrovaný reťazec: ' . $šifrovanie . ' \n ' ;
?>

Kód najprv deklaruje základný text “Vitajte v Linuxhint” a na jeho zobrazenie použije príkaz echo. Potom špecifikuje šifrovací algoritmus, ktorý sa má použiť, AES-128-CTR . Používa tiež openssl_cipher_iv_length() funkcia na výpočet veľkosti inicializačný vektor (IV) potrebné pre túto šifru.



Kód nastavuje šifrovanie iv hodnotu do „1234567891011121“ a šifrovací kľúč 'Linux' . Po dokončení šifrovania pomocou príkazu echo sa šifrovaný reťazec zobrazí pomocou príkazu echo openssl_encrypt() funkciu. V dôsledku náhodného inicializačného vektora použitého na šifrovanie sa konečný zašifrovaný reťazec bude zakaždým líšiť.

Dešifrovanie reťazca pomocou funkcie openssl_decrypt().

Na dešifrovanie reťazca v PHP môžete použiť openssl_decrypt() funkciu. Táto funkcia berie zašifrované údaje, metódu šifrovania a kľúč ako vstupy a vracia dešifrovaný čistý text.

Syntax pre openssl_decrypt() metóda je:

reťazec openssl_decrypt ( reťazec $data , reťazec $metóda , reťazec $kľúč , int $options = 0 , reťazec $iv , reťazec $tag , reťazec $ vás )

Argumenty odovzdané funkcii sú:

  • $data: Zašifrovaný reťazec alebo údaje, ktoré chcete dešifrovať.
  • $method: Šifrovacia metóda alebo šifra použitá počas šifrovania. Zoznam podporovaných metód šifrovania môžete získať pomocou openssl_get_cipher_methods()
  • $key: Šifrovací kľúč, ktorý sa použil na šifrovanie údajov. Mal by sa zhodovať s kľúčom použitým počas šifrovania.
  • $options: Voliteľný parameter, ktorý môže obsahovať ďalšie príznaky pre konkrétne možnosti dešifrovania. Príznaky môžete kombinovať pomocou bitového operátora OR (|). Medzi bežné vlajky patrí OPENSSL_RAW_DATA a OPENSSL_ZERO_PADDING .
  • $iv: The inicializačný vektor (IV) používané počas šifrovania. Malo by to byť rovnaké IV, ktoré bolo použité počas šifrovania a odovzdané ako reťazec.
  • $tag: Overovacia značka pre režimy šifry AEAD (Authenticated Encryption with Associated Data), ako je GCM (Galois/Counter Mode) alebo CCM (Counter with CBC-MAC). Ak autentifikácia zlyhá, openssl_decrypt() vráti FALSE.
  • Váš: Ďalšie overené údaje, ktoré boli použité počas šifrovania pre režimy šifry AEAD.

Návratová hodnota: Ak je úspešný, vráti dešifrovaný reťazec; v opačnom prípade vráti hodnotu FALSE.

Napríklad:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
ozvena 'Šifrovaný reťazec: ' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$ciphering = 'AES-128-CTR' ;
$options = 0 ;
$decryption_key = 'linux' ;
$decryption = openssl_decrypt ( $encrypted_string , $ciphering ,
$decryption_key , $options , $decryption_iv ) ;
ozvena 'Dešifrovaný reťazec: ' . $decryption ;
?>

Dĺžka vektora v tomto kóde sa vypočíta pomocou openssl_cipher_iv_length() a počas šifrovania sa používajú rovnaké parametre šifrovania iv a kľúčové parametre. Šifrovací algoritmus je definovaný ako AES-128-CTR .

Predtým zašifrovaný reťazec sa dešifruje pomocou šifrovacieho algoritmu, šifrovacieho kľúča, nastavení a hodnôt IV pomocou openssl_decrypt() funkciu. Výsledný dešifrovaný text sa potom zobrazí pomocou príkazu echo.

Záver

Tvorba webových stránok často zahŕňa šifrovanie a dešifrovanie údajov. Použitím šifrovania na ochranu citlivých údajov sa môžete vyhnúť tomu, aby boli vaši používatelia vystavení krádeži identity, podvodom a iným bezpečnostným hrozbám. Reťazce v PHP môžu byť šifrované a dešifrované pomocou funkcií openssl_encrypt() a openssl_decrypt() funkcie. Starostlivým používaním šifrovacieho algoritmu a kľúča môžete vytvoriť robustný a bezpečný systém na spracovanie citlivých údajov vo vašich aplikáciách PHP.