Tutorial PHP

PHP INICIO Introducción PHP Instalación de PHP Sintaxis PHP Comentarios PHP Variables PHP PHP Echo / Imprimir Tipos de datos PHP Cadenas PHP Números PHP Matemáticas PHP Constantes PHP Operadores PHP PHP Si... Más... Elseif Cambio de PHP Bucles de PHP Funciones PHP Matrices de PHP Superglobales de PHP PHP expresión regular

Formularios PHP

Manejo de formularios PHP Validación de formulario PHP Formulario PHP requerido Formulario PHP URL/Correo electrónico Formulario PHP completo

PHP Avanzado

Fecha y hora PHP PHP Incluir Manejo de archivos PHP Archivo PHP Abrir/Leer Archivo PHP Crear/Escribir Carga de archivos PHP Cookies PHP Sesiones PHP Filtros PHP Filtros PHP avanzados Funciones de devolución de llamada de PHP PHPJSON Excepciones de PHP

POO de PHP

PHP ¿Qué es la programación orientada a objetos? Clases PHP/Objetos Constructor PHP Destructor PHP Modificadores de acceso de PHP Herencia de PHP Constantes PHP Clases abstractas de PHP Interfaces PHP Características de PHP Métodos estáticos de PHP Propiedades estáticas de PHP Espacios de nombres de PHP Iterables de PHP

Base de datos MySQL

Base de datos MySQL Conexión MySQL MySQL Crear base de datos Crear tabla MySQL MySQL Insertar datos MySQL Obtener la última identificación MySQL Insertar Múltiples MySQL preparado Datos seleccionados de MySQL mysql donde MySQL Ordenar por MySQL Eliminar Datos Datos de actualización de MySQL Límite de datos de MySQL

PHPXML _

Analizadores PHP XML Analizador PHP SimpleXML PHP SimpleXML - Obtener PHP XML Expatriados PHP XML DOM

PHP -AJAX

Introducción a AJAX AJAXPHP Base de datos AJAX XML AJAX Búsqueda en vivo de AJAX Encuesta AJAX

Ejemplos de PHP

Ejemplos de PHP Compilador PHP Cuestionario de PHP Ejercicios PHP Certificado PHP

Referencia PHP

Descripción general de PHP Matriz de PHP Calendario PHP Fecha PHP Directorio PHP Error PHP Excepción PHP Sistema de archivos PHP Filtro PHP PHPFTP PHPJSON Palabras clave PHP PHP Libxml Correo PHP Matemáticas PHP PHP misceláneo PHP MySQLi Red PHP Control de salida de PHP PHP expresión regular PHP SimpleXML flujo PHP Cadena PHP Manejo de variables de PHP Analizador PHP XML código postal de PHP Zonas horarias de PHP

Función PHP crypt()


❮ Referencia de cadenas de PHP

Definición y uso

La función crypt() devuelve una cadena codificada mediante algoritmos DES, Blowfish o MD5.

Esta función se comporta de manera diferente en diferentes sistemas operativos. PHP verifica qué algoritmos están disponibles y qué algoritmos usar cuando está instalado.

El parámetro salt es opcional. Sin embargo, crypt() crea una contraseña débil sin sal. Asegúrese de especificar una sal lo suficientemente fuerte para mayor seguridad.

Hay algunas constantes que se usan junto con la función crypt(). PHP establece el valor de estas constantes cuando se instala.

Constantes:

  • [CRYPT_STD_DES]: hash estándar basado en DES con sal de dos caracteres del alfabeto "./0-9A-Za-z". El uso de caracteres no válidos en el salt hará que esta función falle.
  • [CRYPT_EXT_DES]: hash extendido basado en DES con una sal de nueve caracteres que consta de un guión bajo seguido de 4 bytes de recuento de iteraciones y 4 bytes de sal. Estos están codificados como caracteres imprimibles, 6 bits por carácter, el carácter menos significativo primero. Los valores del 0 al 63 se codifican como "./0-9A-Za-z". El uso de caracteres no válidos en la sal hará que la función falle.
  • [CRYPT_MD5] - Hashing MD5 con una sal de 12 caracteres que comienza con $1$
  • [CRYPT_BLOWFISH] - Blowfish hash con una sal que comienza con $2a$, $2x$ o $2y$, un parámetro de costo de dos dígitos "$" y 22 caracteres del alfabeto "./0-9A-Za-z" . El uso de caracteres fuera del alfabeto hará que esta función devuelva una cadena de longitud cero. El parámetro "$" es el logaritmo en base 2 del recuento de iteraciones para el algoritmo hash subyacente de Blowfish-bashed y debe estar en el rango 04-31. Los valores fuera de este rango harán que la función falle.
  • [CRYPT_SHA_256]: hash SHA-256 con una sal de 16 caracteres a partir de $5$. Si la cadena salt comienza con "rounds=<N>$", el valor numérico de N se usa para indicar cuántas veces se debe ejecutar el ciclo hash, de manera muy similar al parámetro de costo en Blowfish. El número predeterminado de rondas es 5000, hay un mínimo de 1000 y un máximo de 999 999 999. Cualquier selección de N fuera de este rango se truncará al límite más cercano.
  • [CRYPT_SHA_512]: hash SHA-512 con un salt de 16 caracteres a partir de $6$. Si la cadena salt comienza con "rounds=<N>$", el valor numérico de N se usa para indicar cuántas veces se debe ejecutar el ciclo hash, de manera muy similar al parámetro de costo en Blowfish. El número predeterminado de rondas es 5000, hay un mínimo de 1000 y un máximo de 999 999 999. Cualquier selección de N fuera de este rango se truncará al límite más cercano.

En los sistemas en los que esta función admite varios algoritmos, las constantes anteriores se establecen en "1" si se admiten y en "0" en caso contrario.

Nota: No hay función de descifrado. La función crypt() utiliza un algoritmo unidireccional.


Sintaxis

crypt(str,salt)

Valores paramétricos

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Detalles técnicos

Valor devuelto: Devuelve la cadena codificada o una cadena que tiene menos de 13 caracteres y se garantiza que diferirá de la sal en caso de falla
Versión PHP: 4+
Registro de cambios: PHP 5.6.0: muestra una advertencia de seguridad E_NOTICE si se omite sal .
PHP 5.3.7 - Se agregaron los modos $2x$ y $2y$ Blowfish.
PHP 5.3.2: se agregaron SHA-256 y SHA-512. Se corrigió el comportamiento de Blowfish en rondas no válidas que devuelve una cadena de "fallo" ("*0" o "*1"), en lugar de volver a DES.
PHP 5.3.0: PHP ahora contiene su propia implementación para la cripta MD5, Standard DES, Extended DES y los algoritmos Blowfish y la usará si el sistema no es compatible con uno o más de los algoritmos.

Más ejemplos

Ejemplo

En este ejemplo probaremos los diferentes algoritmos:

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

El resultado del código anterior podría ser (dependiendo del sistema operativo):

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ Referencia de cadenas de PHP