Hvordan krypteres og dekrypteres streng i PHP?

Hvordan Krypteres Og Dekrypteres Streng I Php



Kryptering er processen med at konvertere data til en hemmelig kode eller et format, der ikke er forståeligt for alle, der ikke har nøglen til at afkode dem. Dekryptering er proceduren for at tage disse oplysninger og returnere dem til dets originale, læsbare format. I PHP, kryptering, og dekryptering kan bruges til at beskytte følsomme data, såsom adgangskoder, kreditkortoplysninger og andre personlige data.

Det kryptering algoritmen skal tage en række data ind, som du ønsker at kryptere, og bruge den valgte krypteringsmetode til at kryptere dataene. Algoritmen skal derefter returnere de krypterede data i et format, som du kan gemme i en database eller fil.

Til dekryptere dataene, skal du bruge den samme krypteringsmetode til at dekryptere de data, som blev brugt til at kryptere dem. Det betyder, at du bliver nødt til at gemme nøglen et sted, så du kan bruge den til at afkode dataene senere.







Hvordan krypteres og dekrypteres en PHP-streng?

En PHP-streng kan være krypteret og dekrypteret bruger openssl_encrpyt() og openssl_decrypt() metoder, hhv.



Krypter en streng ved hjælp af openssl_encrypt() funktion

Til krypter en streng i PHP ved hjælp af openssl_encrypt() funktion, skal du angive almindelig tekststrengen, krypteringsmetoden og en nøgle. Funktionen returnerer de krypterede data, som du derefter kan gemme eller overføre sikkert.



Syntaksen for openssl_encrypt() metoden er:





streng openssl_encrypt ( snor $data , snor $ metode , snor $nøgle , $optioner = 0 , snor $iv , snor $tag = NUL , snor $ dig , int $tag_length = 16 )
  • $data: Den eller de data, du vil kryptere.
  • $metode: Den krypteringsmetode eller krypteringskode, du ønsker at bruge. Du kan få en liste over understøttede chiffermetoder ved at bruge openssl_get_cipher_methods()
  • $nøgle: Krypteringsnøglen, der vil blive brugt til at kryptere dataene. Det skal være en streng af passende længde og tilfældighed, baseret på den valgte chiffermetode.
  • $options: En valgfri parameter, der kan inkludere yderligere flag for specifikke krypteringsmuligheder. Du kan kombinere flag ved hjælp af bitvis ELLER (|) Fælles flag omfatter OPENSSL_RAW_DATA og OPENSSL_ZERO_PADDING .
  • $iv: Initialiseringsvektoren (iv) anvendt til kryptering; det skal være en tilfældig og unik værdi, angivet som en streng.
  • $tag: En valgfri parameter, der bruges til AEAD (Authenticated Encryption with Associated Data) chiffertilstande, såsom GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Det gemmer godkendelsesmærket, der er genereret under kryptering.
  • Din: Yderligere autentificerede data, der kan bruges til AEAD-krypteringstilstande.
  • $tag_length: Længden af ​​godkendelsesmærket. For GCM-tilstand varierer taglængden fra 4 til 16 bytes.

For eksempel:


$simple_string = 'Velkommen til Linuxhint \n ' ;
ekko 'Original streng:' . $simple_string ;
$kryptering = 'AES-128-CTR' ;
$iv_længde = openssl_cipher_iv_length ( $kryptering ) ;
$optioner = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$kryptering = openssl_encrypt ( $simple_string , $kryptering ,
$encryption_key , $optioner , $encryption_iv ) ;
ekko 'Krypteret streng: ' . $kryptering . ' \n ' ;
?>

Koden erklærer først den grundlæggende tekst “Velkommen til Linuxhint” og bruger ekko-kommandoen til at vise det. Derefter specificerer den krypteringsalgoritmen, der skal bruges, AES-128-CTR . Den bruger også openssl_cipher_iv_length() funktion til at beregne størrelsen af initialiseringsvektor (IV) nødvendig for denne chiffer.



Koden indstiller krypteringen iv værdi til '1234567891011121' og krypteringsnøglen til 'Linux' . Den krypterede streng vises derefter ved hjælp af ekko-kommandoen, når krypteringen er fuldført ved hjælp af openssl_encrypt() fungere. På grund af den tilfældige initialiseringsvektor, der bruges til kryptering, vil den endelige krypterede streng variere hver gang.

Dekrypter en streng ved hjælp af openssl_decrypt() funktion

For at dekryptere en streng i PHP kan du bruge openssl_decrypt() fungere. Denne funktion tager de krypterede data, krypteringsmetoden og nøglen som input og returnerer den dekrypterede klartekst.

Syntaksen for openssl_decrypt() metoden er:

streng openssl_decrypt ( snor $data , snor $ metode , snor $nøgle , int $optioner = 0 , snor $iv , snor $tag , snor $ dig )

Argumenterne videregivet til funktionen er:

  • $data: Den eller de krypterede data, som du vil dekryptere.
  • $metode: Krypteringsmetoden eller chifferen, der bruges under kryptering. Du kan få en liste over understøttede chiffermetoder ved at bruge openssl_get_cipher_methods()
  • $nøgle: Krypteringsnøglen, der blev brugt til at kryptere dataene. Den skal matche den nøgle, der bruges under kryptering.
  • $options: En valgfri parameter, der kan inkludere yderligere flag for specifikke dekrypteringsmuligheder. Du kan kombinere flag ved at bruge den bitvise OR (|) operator. Fælles flag omfatter OPENSSL_RAW_DATA og OPENSSL_ZERO_PADDING .
  • $iv: Det initialiseringsvektor (IV) bruges under kryptering. Det skal være den samme IV, der blev brugt under kryptering og sendt som en streng.
  • $tag: Godkendelsesmærket for AEAD (Authenticated Encryption with Associated Data) chiffertilstande, såsom GCM (Galois/Counter Mode) eller CCM (Counter with CBC-MAC). Hvis godkendelsen mislykkes, vil openssl_decrypt() returnere FALSE.
  • Din: Yderligere autentificerede data, der blev brugt under kryptering til AEAD-krypteringstilstande.

Returneringsværdi: Hvis det lykkes, returnerer det den dekrypterede streng; ellers returnerer den FALSK.

For eksempel:


$krypteret_streng = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
ekko 'Krypteret streng: ' . $krypteret_streng . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$kryptering = 'AES-128-CTR' ;
$optioner = 0 ;
$dekrypteringsnøgle = 'Linux' ;
$dekryptering = openssl_decrypt ( $krypteret_streng , $kryptering ,
$dekrypteringsnøgle , $optioner , $decryption_iv ) ;
ekko 'Dekrypteret streng: ' . $dekryptering ;
?>

Vektorlængden i denne kode beregnes ved hjælp af openssl_cipher_iv_length() funktion, og de samme kryptering iv og nøgleparametre bruges under kryptering. Chifferalgoritmen er defineret som AES-128-CTR .

Den tidligere krypterede streng dekrypteres ved hjælp af krypteringsalgoritmen, krypteringsnøglen, indstillinger og IV-værdier af openssl_decrypt() fungere. Den resulterende dekrypterede tekst vises derefter ved hjælp af ekko-kommandoen.

Konklusion

Oprettelse af hjemmesider involverer ofte kryptering og dekryptering data. Ved at bruge kryptering til at beskytte følsomme data kan du undgå at udsætte dine brugere for identitetstyveri, bedrageri og andre sikkerhedstrusler. Strings i PHP kan krypteres og dekrypteres af funktionerne openssl_encrypt() og openssl_decrypt() funktioner. Ved omhyggeligt at anvende krypteringsalgoritmen og nøglen kan du skabe et robust og sikkert system til håndtering af følsomme data i dine PHP-applikationer.