Com xifrar i desxifrar una cadena a PHP?

Com Xifrar I Desxifrar Una Cadena A Php



Xifratge és el procés de convertir les dades en un codi secret o en un format que no és comprensible per a qui no tingui la clau per descodificar-lo. Desxifrat és el procediment per agafar aquesta informació i tornar-la al seu format original i llegible. En PHP, xifratge, i desxifrat es pot utilitzar per protegir dades sensibles, com ara contrasenyes, informació de targetes de crèdit i altres dades personals.

El xifratge L'algoritme hauria d'incorporar una cadena de dades que voleu xifrar i utilitzar el mètode de xifratge escollit per xifrar les dades. L'algoritme hauria de retornar les dades xifrades en un format que pugueu emmagatzemar en una base de dades o fitxer.

A desxifrar les dades, hauríeu d'utilitzar el mateix mètode de xifratge per desxifrar les dades que es van utilitzar per xifrar-les. Això vol dir que haureu d'emmagatzemar la clau en algun lloc perquè pugueu utilitzar-la per descodificar les dades més tard.







Com xifrar i desxifrar una cadena PHP?

Una cadena PHP pot ser xifrat i desxifrat utilitzant el openssl_encrpyt() i openssl_decrypt() mètodes, respectivament.



Xifra una cadena utilitzant la funció openssl_encrypt().

A xifra una cadena en PHP utilitzant el openssl_encrypt() funció, heu de proporcionar la cadena de text sense format, el mètode de xifratge i una clau. La funció retornarà les dades xifrades, que després podeu emmagatzemar o transmetre de manera segura.



La sintaxi per openssl_encrypt() el mètode és:





cadena openssl_encrypt ( corda $data , corda $mètode , corda $clau , $opcions = 0 , corda $iv , corda $etiqueta = NUL , corda $ tu , int $tag_length = 16 )
  • $data: La cadena o les dades que voleu xifrar.
  • $mètode: El mètode de xifratge o xifratge que voleu utilitzar. Podeu obtenir una llista de mètodes de xifrat admesos mitjançant l' openssl_get_cipher_methods()
  • $key: La clau de xifratge que s'utilitzarà per xifrar les dades. Hauria de ser una cadena de longitud i aleatorietat adequades, basada en el mètode de xifrat escollit.
  • $opcions: Un paràmetre opcional que pot incloure senyals addicionals per a opcions de xifratge específiques. Podeu combinar banderes amb el O bit a bit (|) Les banderes comunes inclouen OPENSL_RAW_DATA i OPENSL_ZERO_PADDING .
  • $iv: El vector d'inicialització (iv) utilitzat per al xifratge; hauria de ser un valor aleatori i únic, proporcionat com a cadena.
  • $etiqueta: Un paràmetre opcional utilitzat per als modes de xifratge AEAD (xifratge autenticat amb dades associades), com ara GCM (mode Galois/comptador) o CCM (comptador amb CBC-MAC). Emmagatzema l'etiqueta d'autenticació generada durant el xifratge.
  • El teu: Dades addicionals autenticades que es poden utilitzar per als modes de xifratge AEAD.
  • $tag_length: La longitud de l'etiqueta d'autenticació. Per al mode GCM, la longitud de l'etiqueta oscil·la entre 4 i 16 bytes.

Per exemple:


$cadena_simple = 'Benvingut a Linuxhint \n ' ;
eco 'Cadena original:' . $cadena_simple ;
$xifrat = 'AES-128-CTR' ;
$iv_longitud = openssl_cipher_iv_length ( $xifrat ) ;
$opcions = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$encriptació = openssl_encrypt ( $cadena_simple , $xifrat ,
$encryption_key , $opcions , $encryption_iv ) ;
eco 'Cadena xifrada:' . $encriptació . ' \n ' ;
?>

El codi declara primer el text bàsic 'Benvingut a Linuxhint' i utilitza l'ordre echo per mostrar-ho. A continuació, especifica l'algoritme de xifratge que s'utilitzarà, AES-128-CTR . També utilitza el openssl_cipher_iv_length() funció per calcular la mida de la vector d'inicialització (IV) necessaris per a aquest xifrat.



El codi estableix el xifratge iv valor a ‘1234567891011121’ i la clau de xifratge per 'Linux' . Aleshores, la cadena xifrada es mostra amb l'ordre echo un cop s'ha completat el xifratge mitjançant l' openssl_encrypt() funció. A causa del vector d'inicialització aleatòria utilitzat per al xifratge, la cadena xifrada final variarà cada cop.

Desxifrar una cadena utilitzant la funció openssl_decrypt().

Per desxifrar una cadena en PHP, podeu utilitzar el openssl_decrypt() funció. Aquesta funció pren les dades xifrades, el mètode de xifratge i la clau com a entrades i retorna el text sense xifrat desxifrat.

La sintaxi per openssl_decrypt() el mètode és:

cadena openssl_decrypt ( corda $data , corda $mètode , corda $clau , int $opcions = 0 , corda $iv , corda $etiqueta , corda $ tu )

Els arguments passats a la funció són:

  • $data: La cadena xifrada o les dades que voleu desxifrar.
  • $mètode: El mètode de xifratge o xifrat utilitzat durant el xifratge. Podeu obtenir una llista de mètodes de xifrat admesos mitjançant l' openssl_get_cipher_methods()
  • $key: La clau de xifratge que s'ha utilitzat per xifrar les dades. Hauria de coincidir amb la clau utilitzada durant el xifratge.
  • $opcions: Un paràmetre opcional que pot incloure senyals addicionals per a opcions de desxifrat específiques. Podeu combinar senyals mitjançant l'operador OR (|) per bits. Les banderes comunes inclouen OPENSL_RAW_DATA i OPENSL_ZERO_PADDING .
  • $iv: El vector d'inicialització (IV) utilitzat durant el xifratge. Hauria de ser el mateix IV que es va utilitzar durant el xifratge i que es va passar com a cadena.
  • $etiqueta: L'etiqueta d'autenticació per als modes de xifratge AEAD (encriptació autenticada amb dades associades), com ara GCM (mode Galois/comptador) o CCM (comptador amb CBC-MAC). Si l'autenticació falla, openssl_decrypt() retornarà FALSE.
  • El teu: Dades addicionals autenticades que es van utilitzar durant el xifratge per als modes de xifratge AEAD.

Valor de retorn: Si té èxit, retorna la cadena desxifrada; en cas contrari, retorna FALSE.

Per exemple:


$cadena_xifrada = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
eco 'Cadena xifrada:' . $cadena_xifrada . ' \n ' ;
$desxifrat_iv = '1234567891011121' ;
$xifrat = 'AES-128-CTR' ;
$opcions = 0 ;
$decryption_key = 'Linux' ;
$desxifrat = openssl_decrypt ( $cadena_xifrada , $xifrat ,
$decryption_key , $opcions , $desxifrat_iv ) ;
eco 'Cadena desxifrada:' . $desxifrat ;
?>

La longitud del vector en aquest codi es calcula utilitzant el openssl_cipher_iv_length() funció, i els mateixos paràmetres de xifratge i clau s'utilitzen durant el xifratge. L'algorisme de xifrat es defineix com AES-128-CTR .

La cadena xifrada anteriorment es desxifra utilitzant l'algoritme de xifratge, la clau de xifratge, la configuració i els valors IV mitjançant el openssl_decrypt() funció. El text desxifrat resultant es mostra amb l'ordre echo.

Conclusió

La creació de llocs web sovint implica xifrat i desxifrat dades. Si utilitzeu l'encriptació per protegir les dades sensibles, podeu evitar exposar els vostres usuaris a robatori d'identitat, frau i altres amenaces de seguretat. Les cadenes en PHP es poden xifrar i desxifrar mitjançant les funcions openssl_encrypt() i openssl_decrypt() funcions. Utilitzant acuradament l'algorisme i la clau de xifratge, podeu crear un sistema robust i segur per gestionar dades sensibles a les vostres aplicacions PHP.