Hur krypterar och dekrypterar man sträng i PHP?

Hur Krypterar Och Dekrypterar Man Strang I Php



Kryptering är processen att konvertera data till en hemlig kod eller ett format som inte är förståeligt för alla som inte har nyckeln att avkoda den. Dekryptering är proceduren för att ta den informationen och återföra den till sitt ursprungliga, läsbara format. I PHP, kryptering, och dekryptering kan användas för att skydda känsliga uppgifter, såsom lösenord, kreditkortsinformation och andra personliga uppgifter.

De kryptering algoritmen bör ta in en sträng av data som du vill kryptera och använda den valda krypteringsmetoden för att kryptera datan. Algoritmen ska sedan returnera den krypterade datan i ett format som du kan lagra i en databas eller fil.

Till Avkryptera data, bör du använda samma krypteringsmetod för att dekryptera data som användes för att kryptera den. Det betyder att du kommer att behöva lagra nyckeln någonstans så att du kan använda den för att avkoda data senare.







Hur krypterar och dekrypterar man en PHP-sträng?

En PHP-sträng kan vara krypterad och dekrypteras använda openssl_encrpyt() och openssl_decrypt() metoder.



Kryptera en sträng med openssl_encrypt()-funktionen

Till kryptera en sträng i PHP med hjälp av openssl_encrypt() funktionen måste du ange klartextsträngen, krypteringsmetoden och en nyckel. Funktionen returnerar krypterad data, som du sedan kan lagra eller överföra säkert.



Syntaxen för openssl_encrypt() metoden är:





sträng openssl_encrypt ( sträng $data , sträng $metod , sträng $nyckel , $alternativ = 0 , sträng $iv , sträng $tag = NULL , sträng $ du , int $tag_length = 16 )
  • $data: Strängen eller data som du vill kryptera.
  • $metod: Den krypteringsmetod eller chiffer du vill använda. Du kan få en lista över chiffermetoder som stöds genom att använda openssl_get_cipher_methods()
  • $key: Krypteringsnyckeln som kommer att användas för att kryptera data. Det bör vara en sträng av lämplig längd och slumpmässighet, baserat på den valda chiffermetoden.
  • $options: En valfri parameter som kan inkludera ytterligare flaggor för specifika krypteringsalternativ. Du kan kombinera flaggor med hjälp av bitvis ELLER (|) Vanliga flaggor inkluderar OPENSSL_RAW_DATA och OPENSSL_ZERO_PADDING .
  • $iv: Initieringsvektorn (iv) som används för kryptering; det ska vara ett slumpmässigt och unikt värde, tillhandahållet som en sträng.
  • $tag: En valfri parameter som används för AEAD (Authenticated Encryption with Associated Data) chifferlägen, såsom GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Den lagrar autentiseringstaggen som genereras under kryptering.
  • Din: Ytterligare autentiserade data som kan användas för AEAD-chifferlägen.
  • $tag_length: Längden på autentiseringstaggen. För GCM-läge sträcker sig tagglängden från 4 till 16 byte.

Till exempel:


$enkel_sträng = 'Välkommen till Linuxhint \n ' ;
eko 'Original sträng: ' . $enkel_sträng ;
$chiffrering = 'AES-128-CTR' ;
$iv_längd = openssl_cipher_iv_length ( $chiffrering ) ;
$alternativ = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$kryptering = openssl_encrypt ( $enkel_sträng , $chiffrering ,
$encryption_key , $alternativ , $encryption_iv ) ;
eko 'Krypterad sträng: ' . $kryptering . ' \n ' ;
?>

Koden förklarar först grundtexten 'Välkommen till Linuxhint' och använder ekokommandot för att visa det. Sedan specificerar den krypteringsalgoritmen som ska användas, AES-128-CTR . Den använder också openssl_cipher_iv_length() funktion för att beräkna storleken på initieringsvektor (IV) behövs för detta chiffer.



Koden ställer in krypteringen iv värde till '1234567891011121' och krypteringsnyckeln till 'Linux' . Den krypterade strängen visas sedan med hjälp av ekokommandot när krypteringen har slutförts med hjälp av openssl_encrypt() fungera. På grund av den slumpmässiga initialiseringsvektorn som används för kryptering, kommer den slutgiltiga krypterade strängen att variera varje gång.

Dekryptera en sträng med openssl_decrypt()-funktionen

För att dekryptera en sträng i PHP kan du använda openssl_decrypt() fungera. Denna funktion tar krypterad data, krypteringsmetoden och nyckeln som indata och returnerar den dekrypterade klartexten.

Syntaxen för openssl_decrypt() metoden är:

sträng openssl_decrypt ( sträng $data , sträng $metod , sträng $nyckel , int $alternativ = 0 , sträng $iv , sträng $tag , sträng $ du )

Argumenten som skickas till funktionen är:

  • $data: Den krypterade strängen eller data som du vill dekryptera.
  • $metod: Krypteringsmetoden eller chiffer som används under krypteringen. Du kan få en lista över chiffermetoder som stöds genom att använda openssl_get_cipher_methods()
  • $key: Krypteringsnyckeln som användes för att kryptera data. Den bör matcha nyckeln som används under kryptering.
  • $options: En valfri parameter som kan inkludera ytterligare flaggor för specifika dekrypteringsalternativ. Du kan kombinera flaggor med den bitvisa operatorn ELLER (|). Vanliga flaggor inkluderar OPENSSL_RAW_DATA och OPENSSL_ZERO_PADDING .
  • $iv: De initieringsvektor (IV) används under kryptering. Det ska vara samma IV som användes under kryptering och skickades som en sträng.
  • $tag: Autentiseringstaggen för AEAD (Authenticated Encryption with Associated Data) chifferlägen, såsom GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Om autentiseringen misslyckas kommer openssl_decrypt() att returnera FALSE.
  • Din: Ytterligare autentiserade data som användes under kryptering för AEAD-chifferlägen.

Returvärde: Om den lyckas returneras den dekrypterade strängen; annars returneras FALSE.

Till exempel:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
eko 'Krypterad sträng: ' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$chiffrering = 'AES-128-CTR' ;
$alternativ = 0 ;
$dekrypteringsnyckel = 'Linux' ;
$dekryptering = openssl_decrypt ( $encrypted_string , $chiffrering ,
$dekrypteringsnyckel , $alternativ , $decryption_iv ) ;
eko 'Dekrypterad sträng: ' . $dekryptering ;
?>

Vektorlängden i denna kod beräknas med hjälp av openssl_cipher_iv_length() funktion, och samma kryptering iv och nyckelparametrar används under kryptering. Chifferalgoritmen definieras som AES-128-CTR .

Den tidigare krypterade strängen dekrypteras med krypteringsalgoritmen, krypteringsnyckeln, inställningarna och IV-värdena av openssl_decrypt() fungera. Den resulterande dekrypterade texten visas sedan med hjälp av ekokommandot.

Slutsats

Skapandet av webbplatser innebär ofta kryptera och dekryptera data. Genom att använda kryptering för att skydda känslig data kan du undvika att utsätta dina användare för identitetsstöld, bedrägeri och andra säkerhetshot. Strängar i PHP kan krypteras och dekrypteras av funktionerna openssl_encrypt() och openssl_decrypt() funktioner. Genom att noggrant använda krypteringsalgoritmen och nyckeln kan du skapa ett robust och säkert system för hantering av känslig data i dina PHP-applikationer.