De encryptie algoritme moet een reeks gegevens opnemen die u wilt coderen en de gekozen coderingsmethode gebruiken om de gegevens te coderen. Het algoritme moet dan de versleutelde gegevens retourneren in een indeling die u in een database of bestand kunt opslaan.
Naar decoderen de gegevens, moet u dezelfde versleutelingsmethode gebruiken om de gegevens te ontsleutelen die werden gebruikt om deze te versleutelen. Dit betekent dat u de sleutel ergens moet opslaan, zodat u deze later kunt gebruiken om de gegevens te decoderen.
Hoe een PHP-string coderen en decoderen?
Een PHP-string kan zijn versleuteld En gedecodeerd de ... gebruiken openssl_encrpyt() En openssl_decrypt() methoden, respectievelijk.
Versleutel een tekenreeks met behulp van de openssl_encrypt()-functie
Naar versleutel een string in PHP met behulp van de openssl_encrypt() functie, moet u de tekenreeks in leesbare tekst, de coderingsmethode en een sleutel opgeven. De functie retourneert de versleutelde gegevens, die u vervolgens veilig kunt opslaan of verzenden.
De syntaxis voor openssl_encrypt() methode is:
string openssl_encrypt ( snaar $ gegevens , snaar $ methode , snaar $ sleutel , $opties = 0 , snaar $iv , snaar $label = NUL , snaar $ jij , int $tag_lengte = 16 )
- $ gegevens: De tekenreeks of gegevens die u wilt versleutelen.
- $methode: De coderingsmethode of het cijfer dat u wilt gebruiken. U kunt een lijst met ondersteunde coderingsmethoden verkrijgen door de openssl_get_cipher_methods()
- $ sleutel: De coderingssleutel die wordt gebruikt om de gegevens te coderen. Het moet een string zijn van de juiste lengte en willekeur, gebaseerd op de gekozen cijfermethode.
- $ opties: Een optionele parameter die extra vlaggen kan bevatten voor specifieke coderingsopties. U kunt vlaggen combineren met de bitsgewijs OF (|) Gemeenschappelijke vlaggen omvatten OPENSSL_RAW_DATA En OPENSSL_ZERO_PADDING .
- $iv: De initialisatievector (iv) die wordt gebruikt voor codering; het moet een willekeurige en unieke waarde zijn, geleverd als een tekenreeks.
- $tag: Een optionele parameter die wordt gebruikt voor AEAD-coderingsmodi (Authenticated Encryption with Associated Data), zoals GCM (Galois/Counter Mode) of CCM (Counter with CBC-MAC). Het slaat de authenticatietag op die tijdens de codering is gegenereerd.
- Jouw: Aanvullende geverifieerde gegevens die kunnen worden gebruikt voor AEAD-coderingsmodi.
- $tag_length: De lengte van de authenticatietag. Voor de GCM-modus varieert de taglengte van 4 tot 16 bytes.
Bijvoorbeeld:
$simple_tekenreeks = 'Welkom bij Linuxhint \N ' ;
echo 'Originele tekenreeks: ' . $simple_tekenreeks ;
$codering = 'AES-128-CTR' ;
$iv_lengte = openssl_cipher_iv_length ( $codering ) ;
$opties = 0 ;
$encryptie_iv = '1234567891011121' ;
$encryptie_sleutel = 'Linux' ;
$encryptie = openssl_encrypt ( $simple_tekenreeks , $codering ,
$encryptie_sleutel , $opties , $encryptie_iv ) ;
echo 'Gecodeerde tekenreeks: ' . $encryptie . ' \N ' ;
?>
De code declareert eerst de basistekst 'Welkom bij Linuxhint' en gebruikt het echo-commando om het te tonen. Vervolgens specificeert het het te gebruiken coderingsalgoritme, AES-128-CTR . Het maakt ook gebruik van de openssl_cipher_iv_length() functie om de grootte van de te berekenen initialisatievector (IV) nodig voor dit cijfer.
De code stelt de codering in iv waarde aan ‘1234567891011121’ en de coderingssleutel 'Linux' . De gecodeerde string wordt vervolgens weergegeven met behulp van de opdracht echo zodra de codering is voltooid met behulp van de openssl_encrypt() functie. Vanwege de willekeurige initialisatievector die wordt gebruikt voor codering, zal de uiteindelijke gecodeerde tekenreeks elke keer anders zijn.
Decodeer een tekenreeks met behulp van de openssl_decrypt()-functie
Om een string in PHP te decoderen, kunt u de openssl_decrypt() functie. Deze functie neemt de versleutelde gegevens, de versleutelingsmethode en de sleutel als invoer en retourneert de ontsleutelde leesbare tekst.
De syntaxis voor openssl_decrypt() methode is:
string openssl_decrypt ( snaar $ gegevens , snaar $ methode , snaar $ sleutel , int $opties = 0 , snaar $iv , snaar $label , snaar $ jij )De argumenten die aan de functie worden doorgegeven zijn:
- $ gegevens: De versleutelde tekenreeks of gegevens die u wilt ontsleutelen.
- $methode: De coderingsmethode of het cijfer dat tijdens de codering wordt gebruikt. U kunt een lijst met ondersteunde coderingsmethoden verkrijgen door de openssl_get_cipher_methods()
- $sleutel: De versleutelingssleutel die is gebruikt om de gegevens te versleutelen. Deze moet overeenkomen met de sleutel die tijdens de codering is gebruikt.
- $opties: Een optionele parameter die extra vlaggen kan bevatten voor specifieke decoderingsopties. U kunt vlaggen combineren met de bitsgewijze OR-operator (|). Gemeenschappelijke vlaggen omvatten OPENSSL_RAW_DATA En OPENSSL_ZERO_PADDING .
- $iv: De initialisatievector (IV) gebruikt tijdens encryptie. Het moet dezelfde IV zijn die tijdens de codering is gebruikt en als een tekenreeks is doorgegeven.
- $label: De authenticatietag voor AEAD-coderingsmodi (Authenticated Encryption with Associated Data), zoals GCM (Galois/Counter Mode) of CCM (Counter with CBC-MAC). Als de authenticatie mislukt, zal openssl_decrypt() FALSE retourneren.
- Jouw: Aanvullende geverifieerde gegevens die zijn gebruikt tijdens codering voor AEAD-coderingsmodi.
Winstwaarde: Als dit lukt, retourneert het de gedecodeerde tekenreeks; anders retourneert het FALSE.
Bijvoorbeeld:
$versleutelde_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
echo 'Gecodeerde tekenreeks: ' . $versleutelde_string . ' \N ' ;
$decodering_iv = '1234567891011121' ;
$codering = 'AES-128-CTR' ;
$opties = 0 ;
$decodering_sleutel = 'Linux' ;
$ decryptie = openssl_decrypt ( $versleutelde_string , $codering ,
$decodering_sleutel , $opties , $decodering_iv ) ;
echo 'Gedecodeerde tekenreeks: ' . $ decryptie ;
?>
De vectorlengte in deze code wordt berekend met behulp van de openssl_cipher_iv_length() functie, en dezelfde encryptie iv en sleutelparameters worden gebruikt tijdens de encryptie. Het coderingsalgoritme wordt gedefinieerd als AES-128-CTR .
De eerder gecodeerde tekenreeks wordt gedecodeerd met behulp van het coderingsalgoritme, de coderingssleutel, instellingen en IV-waarden door de openssl_decrypt() functie. De resulterende gedecodeerde tekst wordt vervolgens weergegeven met behulp van het echo-commando.
Conclusie
Bij het maken van websites komt vaak kijken versleutelen en ontsleutelen gegevens. Door versleuteling te gebruiken om gevoelige gegevens te beschermen, kunt u voorkomen dat uw gebruikers worden blootgesteld aan identiteitsdiefstal, fraude en andere beveiligingsbedreigingen. Strings in PHP kunnen worden versleuteld en ontsleuteld door de functies openssl_encrypt() En openssl_decrypt() functies. Door zorgvuldig gebruik te maken van het coderingsalgoritme en de sleutel, kunt u een robuust en veilig systeem creëren voor het verwerken van gevoelige gegevens in uw PHP-applicaties.