PHP dispone de varias funciones para encriptar tanto cadenas como archivos. Como sabreis hay encriptados tanto irreversibles (una dirección) como reversibles (dos direcciones). En esta primera entrega hablaremos de las funciones que vienen por defecto en PHP. La segunda entrega estará dedicada a la librería MCRYPT.

Irreversibles

CRC32: Calcula el polinomio crc32 de una cadena.
Es decir que lo que hace es mostrar un número (o código, como quieras llamarlo) representativo de la cadena. Al devolver un número este puede ser tanto positivo como negativo, dependerá de la cadena introducida.
Ejemplo:

<?php
/*------------------------------------------
-------Función de Encriptacion crc32--------
--------------------------------------------*/
$valorIntroducido = $_GET['cadena'];
$cadena_crc32 = crc32($valorIntroducido);
echo 'Cadena Introducida: '.$valorIntroducido.'<br/>';
echo 'Cadena Encriptada: '.$cadena_crc32;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/crc32.php?cadena=hola

CRYPT: Encripta una cadena mediante un algoritmo no reversible (hash). El resultado de esta función no es siempre el mismo para la misma cadena. Con lo que a la hora de comprobar posibles autenticidades sobre la cadena original nos encontraríamos con un serio problema.
Ejemplo:

<?php
/*------------------------------------------
-------Función de Encriptacion crypt--------
--------------------------------------------*/
$valorIntroducido = $_GET['cadena'];
$cadena_crypt = crypt($valorIntroducido);
echo 'Cadena Introducida: '.$valorIntroducido.'<br/>';
echo 'Cadena Encriptada: '.$cadena_crypt;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/crypt.php?cadena=hola
(Nota: Ejecutadla unas cuantas veces. Vereis que el resultado es distinto para la misma cadena).

MD5_FILE: Calcula el resumen criptográfico de un archivo. Encripta el contenido del archivo indicado. También podríamos utilizar la función md5, extrayendo el contenido del archivo en una variable y encriptando el contenido de esa variable.
Para el ejemplo de esta funcion hemos creado un archivo ‘archivo_a_encriptar.txt’ que hemos colocado en el mismo directorio que el php. El contenido del archivo txt es simplemente el comienzo de El Quijote.

“En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor…”

Ejemplo:

<?php
/*------------------------------------------
-----Función de Encriptacion md5_file-------
--------------------------------------------*/
$archivo = 'archivo_a_encriptar.txt';
$cadena_md5_file = md5_file($archivo);
echo 'Cadena Encriptada: '.$cadena_md5_file;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/md5_file.php

MD5: Calcula el hash MD5 de una cadena. Básicamente hace lo mismo que md5_file, solo que este no actua sobre archivos.

Ejemplo:

<?php
/*------------------------------------------
-------Función de Encriptacion md5--------
--------------------------------------------*/
$valorIntroducido = $_GET['cadena'];
$cadena_md5 = md5($valorIntroducido);
echo 'Cadena Introducida: '.$valorIntroducido.'<br/>';
echo 'Cadena Encriptada: '.$cadena_md5;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/md5.php?cadena=hola

SHA1_FILE: Calcula el resumen criptográfico sha1 de un archivo.
La diferencia con respecto a la función md5_file es que el resumen de esta ocupa 40 caracteres.
Ejemplo:

<?php
/*------------------------------------------
-----Función de Encriptacion sha1_file------
--------------------------------------------*/
$archivo = "archivo_a_encriptar.txt";
$cadena_sha1_file = sha1_file($archivo);
echo 'Cadena Encriptada: '.$cadena_sha1_file;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/sha1_file.php

SHA1: Calcula el resumen criptográfico sha1 de una cadena.
Ejemplo:

<?php
/*------------------------------------------
-------Función de Encriptacion sha1--------
--------------------------------------------*/
$valorIntroducido = $_GET['cadena'];
$cadena_sha1 = sha1($valorIntroducido);
echo 'Cadena Introducida: '.$valorIntroducido.'<br/>';
echo 'Cadena Encriptada: '.$cadena_sha1;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/sha1.php?cadena=hola

Reversibles

STR_ROT13: Desplaza cada letra 13 caracteres. Realmente no es una función de encriptación como tal, aunque nos puede valer como juego preeliminar. ¿Por qué 13 caracteres? Porque el abecedario tiene en total 26 letras (no cuenta la ñ) y 13 es la mitad, con lo que siempre la cadena ‘encriptada’ devolverá la cadena original y viceversa. Esta función sin embargo no toma en cuenta los caracteres no alfabéticos.
Ejemplo:

<?php
/*------------------------------------------
-----Función de Encriptacion str_rot13------
--------------------------------------------*/
$valorIntroducido = $_GET['cadena'];
$cadena_str_rot13 = str_rot13($valorIntroducido);
echo 'Cadena Introducida: '.$valorIntroducido.'<br/>';
echo 'Cadena Encriptada: '.$cadena_str_rot13;
?>

Ejemplo Online:
http://www.martinpulido.com/lab/php/encriptado/str_rot13.php?cadena=hola