Encriptación sencilla en PHP

Ésta forma de encriptar es fácil y realmente interesante. Utiliza el comando de linux mkpasswd, por lo que obviamente lo puedes aplicar cuando es posible que ejecutes comandos linux desde tu aplicación.
La ventaja de ésta práctica radica en que en ningún momento el usuario tiene acceso a los scripts que encriptan una palabra o frase (salvo que tenga acceso al raíz donde se encuentre la plaicación PHP ).
Para éste propósito utilizamos el comando mkpasswd de linux:

$hash=substr($palabra, 0, 2);
$encriptado=exec(“mkpasswd $palabra $hash”);

El comando mkpasswd utiliza por defecto el algoritmo DES para realizar la encriptación. Es posible utilizar MD5 (pasándole como parámetro ‘ -H md5 ‘) pero debido a que las cadenas resultantes utilizarían caracteres especiales (como ‘\’ ‘.’ ‘(’ ‘/’ etc) sería necesario manipularla de alguna forma para evitar problemas, lo cual por cuestiones de objetividad no expondré en este tutorial).

Cómo funcionan éstas sentencias? Primero debemos aclarar que si solo se pasa como parámetro la palabra a encriptar, mkpasswd devolverá distintos resultados cada vez que se lo invoque. Para solucionar ésto debemos utilziar el mismo hash siempre. Con éste motivo se crea la variable $hash, que simplemente contiene los dos primeros caracteres de la palabra a encriptar.

Caso práctico: éste script lo utilizo mucho para guardar contraseñas en algún archivo plano, de configuración o incluso en algunas bases de datos.

Básicamente la primera vez que el usuario registra su password ésta es encriptada antes de guardarse.

Debido a que nunca más se podrá desencriptar dicha password la única opción que nos deja para compararla al momento de posteriores logon’s sería ecriptar la contraseña pasada cuando el usuario se loguea y comparar directamente el resultado encriptado con lo almacenado en la base de datos (o archivo plano). De ésta forma el único punto dábil es que se capture la password cuando viaja desde el cliente, lo cual puede solucionarse con algún script en Java.