Métodos de encriptación PHP

Existen dos tipos de métodos de encriptación de cadenas, los métodos de un sentido (One Way) y los de doble sentido (Two Ways). Os vamos a contar un poco de que va cada uno.

Algoritmos de encriptación PHP de un sentido (One Way)

Los algoritmos de encriptación de un solo sentido son los más rápidos de implementar y los más usados, con funciones de codificación ya incluidas en php y referenciadas en php.net. Esa es su pricipal ventaja, por contra, su principal desventaja es que una vez codificada la cadena no se puede descodificar, por lo que en principio no sabremos cual era la cadena original.

Se utilizan sobretodo para encriptar contraseñas en el control de sesiones de usuario y en las pasarelas de pago virtuales (TPVv) de los bancos.

- md5() - El más usado para el almacenamiento de contraseñas. A partir de un texto de cualquier longitud el MD5 genera siempre una clave de 128 bits (32 caracteres) Única para ese texto.

Ejemplo de uso:

echo 'Password: '.md5('hola'); //Password:  4d186321c1a7f0f354b297e8914ab240
>


- SHA1() - Es la versión mejorada del método Sha. Calcula el sha1 hash de una cadena, generando asi una clave de 160 bits (40 caracteres). Se utiliza por su mayor seguridad en pasarelas de pago y en transacciones de datos que requieren un nivel más alto de seguridad.

Ejemplo de uso:

echo 'Password: '.sha1('hola'); //Password:  99800b85d3383e3a2fb45eb7d0066a4879a9dad0
>

- sha1_file() - Calcula el sha1 de un archivo.

Ejemplo de uso:


echo 'File Hash: '.sha1_file('t.php') // File Hash: c8950f3a13b91e60c819406cccdc7bb7c585fd18
>

- crc32() - Calcula el crc32 polinomial de una cadena.La comprobación de redundancia cíclica (CRC) es un tipo de función que recibe un flujo de datos de cualquier longitud como entrada y devuelve un valor de longitud fija como salida. Esta funcion se usa por lo general para validar la integridad de los datos que seran trasmitidos o que seran almacenados, lo que se suele hacer es generar el crc32 de un texto antes de enviarlo luego se envia por la web o por donde sea el texto + la clave crc32, al llegar a destino se reciben los dos, se aplica nuevamente esta funcion al texto  y si la clave generada coincide con la clave crc32 generada inicialmente, el mensaje es correcto, caso contrario se solicita la retrasmision. El término suele ser usado para designar tanto a la función como a su resultado.

Ejemplo de uso:

print 'crc: '.crc32('Mensaje a enviar');  //crc: 679863892
>

- hash() - Genera un valor hash de una cadena.

- crypt - Retorna una clave encriptada utilizando el estandar Unix Basado en encriptación DES o alternando algoritmos disponibles en el sistema operativo.

Ejemplo de uso:

print crypt('hola'); // $1$2o3L0Ym.$2GgYu7rpuaOhHZaBVRY0E0
>

Algoritmos de encriptación PHP de doble sentido (Two Ways)

RSA

Es un sistema criptográfico de clave pública desarrollado en 1977. En la actualidad, RSA es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.

RSA es mucho más lento que DES y que otros criptosistemas simétricos.

DES

Data Encryption Standard (DES) es un algoritmo de cifrado, es decir, un método para cifrar información, escogido por FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo. DES se considera inseguro para muchas aplicaciones. Esto se debe principalmente a que el tamaño de clave de 56 bits es corto; las claves de DES se han roto en menos de 24 horas.

Desde hace algunos años, el algoritmo ha sido sustituido por el nuevo AES (Advanced Encryption Standard).

AES

Advanced Encryption Standard (AES), también conocido como Rijndael, es un esquema de cifrado por bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos

AES es uno de los algoritmos más populares usados en criptografía simétrica.