Hvordan kryptere og dekryptere streng i PHP?

Hvordan Kryptere Og Dekryptere Streng I Php



Kryptering er prosessen med å konvertere data til en hemmelig kode eller et format som ikke er forståelig for alle som ikke har nøkkelen til å dekode dem. Dekryptering er fremgangsmåten for å ta denne informasjonen og returnere den til sitt originale, lesbare format. I PHP, kryptering, og dekryptering kan brukes til å beskytte sensitive data, som passord, kredittkortinformasjon og andre personlige data.

De kryptering algoritmen bør ta inn en streng med data som du ønsker å kryptere og bruke den valgte krypteringsmetoden for å kryptere dataene. Algoritmen skal da returnere de krypterte dataene i et format som du kan lagre i en database eller fil.

Til dekryptere dataene, bør du bruke samme krypteringsmetode for å dekryptere dataene som ble brukt til å kryptere dem. Dette betyr at du må lagre nøkkelen et sted slik at du kan bruke den til å dekode dataene senere.







Hvordan kryptere og dekryptere en PHP-streng?

En PHP-streng kan være kryptert og dekryptert bruker openssl_encrpyt() og openssl_decrypt() metoder, henholdsvis.



Krypter en streng ved å bruke openssl_encrypt()-funksjonen

Til kryptere en streng i PHP ved å bruke openssl_encrypt() funksjon, må du oppgi rentekststrengen, krypteringsmetoden og en nøkkel. Funksjonen vil returnere de krypterte dataene, som du deretter kan lagre eller overføre sikkert.



Syntaksen for openssl_encrypt() metoden er:





streng openssl_encrypt ( streng $data , streng $metode , streng $nøkkel , $alternativer = 0 , streng $iv , streng $tag = NULL , streng $ deg , int $tag_length = 16 )
  • $data: Strengen eller dataene du vil kryptere.
  • $metode: Krypteringsmetoden eller chifferen du ønsker å bruke. Du kan få en liste over støttede chiffermetoder ved å bruke openssl_get_cipher_methods()
  • $key: Krypteringsnøkkelen som skal brukes til å kryptere dataene. Det skal være en streng med passende lengde og tilfeldighet, basert på den valgte chiffermetoden.
  • $options: En valgfri parameter som kan inkludere flere flagg for spesifikke krypteringsalternativer. Du kan kombinere flagg ved å bruke bitvis ELLER (|) Vanlige flagg inkluderer OPENSSL_RAW_DATA og OPENSSL_ZERO_PADDING .
  • $iv: Initialiseringsvektoren (iv) brukt for kryptering; den skal være en tilfeldig og unik verdi, gitt som en streng.
  • $tag: En valgfri parameter som brukes for AEAD (Authenticated Encryption with Associated Data) chiffermoduser, for eksempel GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Den lagrer autentiseringskoden generert under kryptering.
  • Din: Ytterligere autentiserte data som kan brukes for AEAD-chiffermoduser.
  • $tag_length: Lengden på autentiseringskoden. For GCM-modus varierer taglengden fra 4 til 16 byte.

For eksempel:


$enkel_streng = 'Velkommen til Linuxhint \n ' ;
ekko 'Original streng: ' . $enkel_streng ;
$kryptering = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $kryptering ) ;
$alternativer = 0 ;
$encryption_iv = '1234567891011121' ;
$krypteringsnøkkel = 'Linux' ;
$kryptering = openssl_encrypt ( $enkel_streng , $kryptering ,
$krypteringsnøkkel , $alternativer , $encryption_iv ) ;
ekko 'Kryptert streng: ' . $kryptering . ' \n ' ;
?>

Koden erklærer først den grunnleggende teksten 'Velkommen til Linuxhint' og bruker ekko-kommandoen for å vise den. Deretter spesifiserer den krypteringsalgoritmen som skal brukes, AES-128-CTR . Den bruker også openssl_cipher_iv_length() funksjon for å beregne størrelsen på initialiseringsvektor (IV) nødvendig for denne chifferen.



Koden setter krypteringen iv verdi til '1234567891011121' og krypteringsnøkkelen til 'Linux' . Den krypterte strengen vises deretter ved hjelp av ekko-kommandoen når krypteringen er fullført med openssl_encrypt() funksjon. På grunn av den tilfeldige initialiseringsvektoren som brukes til kryptering, vil den endelige krypterte strengen variere hver gang.

Dekrypter en streng ved å bruke openssl_decrypt()-funksjonen

For å dekryptere en streng i PHP, kan du bruke openssl_decrypt() funksjon. Denne funksjonen tar de krypterte dataene, krypteringsmetoden og nøkkelen som input og returnerer den dekrypterte klarteksten.

Syntaksen for openssl_decrypt() metoden er:

streng openssl_decrypt ( streng $data , streng $metode , streng $nøkkel , int $alternativer = 0 , streng $iv , streng $tag , streng $ deg )

Argumentene som sendes til funksjonen er:

  • $data: Den krypterte strengen eller dataene du vil dekryptere.
  • $metode: Krypteringsmetoden eller chifferen som brukes under kryptering. Du kan få en liste over støttede chiffermetoder ved å bruke openssl_get_cipher_methods()
  • $key: Krypteringsnøkkelen som ble brukt til å kryptere dataene. Den skal samsvare med nøkkelen som brukes under kryptering.
  • $options: En valgfri parameter som kan inkludere flere flagg for spesifikke dekrypteringsalternativer. Du kan kombinere flagg ved å bruke den bitvise ELLER (|)-operatoren. Vanlige flagg inkluderer OPENSSL_RAW_DATA og OPENSSL_ZERO_PADDING .
  • $iv: De initialiseringsvektor (IV) brukes under kryptering. Det skal være den samme IV som ble brukt under kryptering og sendt som en streng.
  • $tag: Autentiseringskoden for AEAD (Authenticated Encryption with Associated Data) chiffermoduser, for eksempel GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Hvis autentiseringen mislykkes, vil openssl_decrypt() returnere FALSE.
  • Din: Ytterligere autentiserte data som ble brukt under kryptering for AEAD-chiffermoduser.

Returverdi: Hvis den lykkes, returnerer den den dekrypterte strengen; ellers returnerer den FALSE.

For eksempel:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
ekko 'Kryptert streng: ' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$kryptering = 'AES-128-CTR' ;
$alternativer = 0 ;
$dekrypteringsnøkkel = 'Linux' ;
$dekryptering = openssl_decrypt ( $encrypted_string , $kryptering ,
$dekrypteringsnøkkel , $alternativer , $decryption_iv ) ;
ekko 'Dekryptert streng: ' . $dekryptering ;
?>

Vektorlengden i denne koden beregnes ved å bruke openssl_cipher_iv_length() funksjon, og de samme kryptering iv og nøkkelparametere brukes under kryptering. Chifferalgoritmen er definert som AES-128-CTR .

Den tidligere krypterte strengen dekrypteres ved hjelp av chifferalgoritmen, krypteringsnøkkelen, innstillingene og IV-verdiene av openssl_decrypt() funksjon. Den resulterende dekrypterte teksten vises deretter ved hjelp av ekko-kommandoen.

Konklusjon

Opprettelsen av nettsider innebærer ofte kryptering og dekryptering data. Ved å bruke kryptering for å beskytte sensitive data kan du unngå å utsette brukerne dine for identitetstyveri, svindel og andre sikkerhetstrusler. Strenger i PHP kan krypteres og dekrypteres av funksjonene openssl_encrypt() og openssl_decrypt() funksjoner. Ved å bruke krypteringsalgoritmen og nøkkelen nøye, kan du lage et robust og sikkert system for håndtering av sensitive data i PHP-applikasjonene dine.