Noticias Raspberry Pi

Usando la función crypt() en PHP

Este tutorial le mostrará cómo usar la función crypt() en PHP.

La función crypt() de PHP le permite generar un hash de la cadena especificada usando varios algoritmos hash.

Algunos de los hash admitidos por esta función incluyen pez globo, SHA-256 y MD5.

Si planea usarlo para encriptar contraseñas, le recomendamos usar la función password_hash() en su lugar. Esta función es un envoltorio para la función crypt() de PHP, pero usa cifrado fuerte y sal fuerte por defecto.

En las próximas secciones, le mostraremos cómo usar la función crypt() para generar cada uno de los valores hash admitidos para una cadena elegida. Como esto está controlado por su parámetro «sal», no es la función más fácil de usar.

Sintaxis de la función PHP crypt()

Comencemos explorando la sintaxis de la función de cifrado en PHP. La sintaxis nos muestra cómo se escribe esta función y le dará una idea básica para usarla.

Con esta sintaxis, puede ver que la función crypt() tiene dos parámetros y devuelve una cadena que será su hash.

$cadena: este parámetro es donde especificará la cadena que desea que PHP genere hash.

Según el tipo de hash, esta cadena se puede truncar al generar el hash, lo que significa que no tendrá en cuenta la cadena completa.

$ sal: usará la sal para especificar el método de hashing, así como la «sal» aplicada al hash.

Un salt es una forma de modificar el resultado de un hash. Solo podrás generar el mismo hash con la misma sal. Esto es para evitar que alguien genere una tonelada de hashes para posibles contraseñas y obtenga coincidencias muy rápidamente.

La función crypt() devolverá la versión hash de la cadena pasada. La longitud de esta cadena depende en gran medida de la sal que pase a la función de cripta.

Métodos hash admitidos para PHP

Como se mencionó anteriormente, la función de cifrado de PHP admite varios métodos de hash diferentes. El método hash se especifica a través del parámetro salt usando un juego de caracteres específico.

Repasaremos cada tipo de hash admitido y cómo se especifican en las siguientes secciones. Debes buscar el que mejor se adapte a tus necesidades.

CRYPT_STD_DES

El primer hash que veremos es el hash estándar basado en DES. Este hash se especifica usando una sal de 2 caracteres.

Los caracteres válidos para este tipo de hash son «.», «/» «0-9», «AZ» y «az».

Por ejemplo, PHP consideraría lo siguiente como una sal válida para el hash «CRYPT_STD_DES».

CRYPT_EXT_DES

Una versión extendida del hash basado en DES tiene algunas ventajas, incluida la compatibilidad con una sal más larga.

El salt para este método hash debe tener nueve caracteres y comenzar con el carácter de subrayado (_).

El algoritmo usa los primeros cuatro caracteres después del guión bajo como el número de iteraciones. Cada carácter tiene 6 bits, siendo el primer carácter el menos significativo.

Los siguientes cuatro caracteres son la sal aplicada a tu hash

Estos valores se codifican del 0 al 64 utilizando los caracteres “./0-9 AZ az“, el punto (.) será 0, y la z minúscula será “64”.

A continuación se muestra un ejemplo de configuración de un hash «CRYPT_EXT_DES» utilizando el parámetro salt de las funciones crypt() de PHP.

CRYPT_MD5

Otro hash soportado por la función crypt() de PHP es MD5. Aunque ahora se considera un hash relativamente débil, todavía tiene usos fuera de la seguridad.

También puede usar la función md5() en PHP para lograr lo mismo que usar este tipo de hash.

Para especificar el hash MD5 con esta función, debe comenzar su sal con «$ 1 $» (identificador de hash) seguido de ocho caracteres (sal), y finalmente terminar la cadena con otro símbolo de signo de dólar ($).

Aquí hay un ejemplo de cómo definir una sal MD5 con la función crypt() en PHP.

CRYPT_BLOWFISH

La función crypt() también es compatible con la versión bcrypt del cifrado blowfish, que se diseñó como una sólida alternativa al antiguo estándar DES. Si encripta datos como contraseñas, este es el algoritmo que probablemente quiera usar en PHP.

Gracias al diseño del algoritmo, puede fortalecer gradualmente el hash con el tiempo aumentando el número de iteraciones. Fortalece el hash porque se necesita más potencia de procesamiento para generar un hash que ralentiza el proceso. Desafortunadamente, un algoritmo rápido no es adecuado para el cifrado.

Para usar el estándar de cifrado blowfish en PHP, debe comenzar su sal con «$2y$». Aunque también puede usar «$2x$» y «$2a$», ambos usarán un método hash más débil.

Después de la identificación del hash, debe especificar el costo del hash usando un parámetro de dos dígitos. Este costo debe estar entre «04» y «31». Cuanto mayor sea el número, más potencia de procesamiento se necesitará para generar un hash.

Finalmente, el hash se completa con un hash de 22 caracteres. Este hash solo debe usar los siguientes caracteres «.», «/», «0-9», «AZ» y «az».

El siguiente es un ejemplo de una sal válida para el estándar blowfish en PHP con la función crypt().

CRYPT_SHA256

El uso de la función crypt() de PHP también le permite generar un hash SHA-256 de su cadena especificada.

Para generar el hash usando PHP, debe comenzar su salt con «$ 5 $». Esto le dice a la función crypt() que desea usar el hash SHA-256.

Luego puede especificar la cantidad de ciclos hash para ejecutar. Estos trucos son similares a la opción de costo de Blowfish. Si lo desea, debe escribir «rondas=N$» después del especificador hash. N es el número de vueltas a realizar.

Blowfish tiene un mínimo de 1000 giros y un máximo de 999 999 999. Cualquier valor fuera de este rango se redondeará al valor más cercano.

Si no se especifica ningún número, PHP tendrá por defecto 5000 rondas.

Finalmente, debe especificar una sal de dieciséis caracteres seguida del símbolo del signo de dólar ($).

A continuación se muestran dos ejemplos del uso del hash SHA-256 con la función crypt() de PHP. En el ejemplo superior usamos la opción de rondas, y en el segundo no.

CRYPT_SHA512

El hash SHA-512 es una versión más larga del hash SHA-256. Dado que es esencialmente una versión extendida del hash, su uso es muy similar.

La única diferencia es cómo le dices a la función crypt() de PHP que quieres generar un hash SHA-512.

Para generar un hash SHA-512, deberá comenzar su salt con «$6$».

Después de la identificación del hash, puede especificar la cantidad de rondas que desea usar para generar el hash. Al igual que SHA-256, esto se escribe usando «rondas=N$» donde «N» es el número de rondas.

Finalmente, puede escribir su sal de 16 caracteres seguida del símbolo del signo de dólar ($).

Dos ejemplos de hashes SHA-256 válidos son los que hemos escrito a continuación. Usamos el parámetro rounds. nosotros no

Usando la función crypt() en PHP

Esta sección le mostrará cómo usar la función crypt() en PHP. Utilizará las diferentes sales que aprendimos anteriormente y verá cómo funcionan en código real.

Para este ejemplo, escribiremos un breve script PHP que generará un hash utilizando cada uno de los hash admitidos por las funciones crypt().

1. Comencemos este script declarando una variable llamada «$cadena», a la que le asignaremos la cadena PHP «PiMyLifeUp».

En el resto de este script, usaremos esta única cadena para cada uno de nuestros diferentes tipos de hash. Al hacer esto, puede ver cómo se ve cada uno de los diferentes hashes de la función crypt() de PHP y cómo se usan.

2. Con nuestro primer ejemplo, usaremos la función PHP crypt() para producir un hash DES estándar de nuestra cadena.

Hacemos esto pasando primero «$string» en el primer parámetro de la función crypt(). Luego pasamos dos caracteres simples para la sal. En nuestro ejemplo, será «pi».

Finalmente, usamos la palabra clave echo de PHP para mostrar el texto «DES estándar» seguido del hash que acabamos de generar.

3. Para nuestro próximo ejemplo, generaremos un hash DES extendido de nuestra variable «$cadena».

Esta vez cuando especifiquemos la sal, usaremos «_Pi..SALT». Esta sal usa el formato esperado por la función crypt().

El resultado se emite mediante la palabra clave echo y se identificará con la etiqueta «DES extendido».

4. Ahora permítanos mostrarle cómo puede usar la función crypt() en PHP para generar un hash MD5 de una cadena.

Primero pasamos nuestra variable «$cadena» a la función de cifrado. Luego pasamos a la sal. Comenzamos este salt con «$1$» para decirle a PHP que genere un hash MD5. Después del identificador hash, especificamos un salt de ocho caracteres.

Como en el ejemplo anterior, imprimimos el hash MD5 generado usando echo.

5. Generar un cifrado de pez globo es tan simple como otros hashes. Solo necesita pasar la sal correctamente formateada.

Para ilustrar esto, usamos la sal «$2y$06$PiMyLifeUpExampleSalt1». Al comenzar esta sal con «$2y$», PHP puede decir que queremos generar un hash de pez globo. Después de esto, especificamos que queremos ejecutar «06» iteraciones del hash.

Finalmente, para terminar nuestra sal, incluimos una sal de 22 caracteres.

6. A continuación, le mostraremos cómo puede usar la función crypt() en PHP para generar un hash SHA-256 de una cadena específica.

PHP identifica una sal para SHA-256 por la presencia de «$5$» al principio de la sal. Luego, puede especificar opcionalmente cuántas rondas debe ejecutar el hash antes de que se complete. Cuantas más rondas, más tiempo tarda en completarse el hash.

Luego enviamos el hash resultante a la pantalla usando la palabra clave «echo».

siete. Nuestro ejemplo final le muestra el tipo de hash final compatible con la función crypt() de PHP. Este tipo de hash es SHA-512.

Para decirle a la función crypt() que genere un hash SHA-512, debe comenzar su salt con «$6$». Opcionalmente, puede establecer el número de rondas para generar el hash. Finalmente, termina la cadena con una sal de 16 caracteres.

8. La versión final de su código debería verse como lo que mostramos a continuación.

9. Después de ejecutar el código anterior, debería terminar con el siguiente resultado.

Con este resultado, puedes ver los diferentes hashes generados para nuestra cadena “PiMyLIfeUp”.

Conclusión

Con suerte, en este punto ahora tiene una buena comprensión de cómo puede usar la función crypt () en PHP.

Esta función le permite generar hashes de cualquier cadena que pase. Aunque no es la función más fácil de usar, es muy potente. Además, admite varios algoritmos hash útiles.

Comente a continuación si tiene algún problema al usar la función crypt().

También tenemos una gran cantidad de otros tutoriales de PHP si desea explorar más este lenguaje. Si desea aprender un nuevo lenguaje de programación, consulte nuestras muchas otras guías de codificación.

Actualizaciones semanales directamente a su bandeja de entrada

¡Reciba nuestros proyectos de Raspberry Pi, tutoriales de codificación, guías de Linux y más!

Suscribir

También puede gustarte...