Funciones de Encriptación/Desencriptación en PHP (I)
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.
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
Pues está precioso y suena todo muy bien,pero no entiendo un pijoo,jajaja…claro,que supongo que es como si yo me pongo aquí a hablar de los niveles de trasmisión de setrotonina y su implación en el estado de ánimo..ala,toma ya!
Un besazo,señor programador!
Muchas gracias Nata.
Pero lo de los niveles de transmisión e implantación es algo que por suerte tengo dominado.
…
…
…
…
Pero ni la más remota idea de que me has dicho jajaj.Aun asi gracias por escribir.
Otro besazo para tí señorita psicóloga.
Santi M.
Hola Santi!!
Pues nada,decirte q el blog está super bien organizado y con muy buena información,lo q pasa q ya sabes q yo no entiendo nada esto,pero bueno es igual q si yo me pongo hablar aki de operaciones básicas de fluídos,no?jeje.
Pues venga wapisimo,te dejo q voy a seguir estudiando un ratico.
Un besazo muy fuerte para un gran y buen programador,jeje.
Hola Eva!!
Muchísimas gracias. Me alegro que te guste la estructura del blog …y su contenido.
De todas maneras….si te pones a hablar de operaciones básicas de fluidos quizá te entienda…que de química y física todavía me acuerdo…algo.
Besazos
Santi M.
Hola, gracias por tener esta informacion en la pagina ya que me toca exponer lo que es encriptacion de php, estudio en la universidad de campeche.
Pero si me haces el favor de enviarme a mi correo algun tutorial completo de php, si es posible uno de java.
Gracias por todo, espero una respuesta positiva.
Hola TAIZ!
Me alegra que te sea de utilidad estos artículos sobre la encriptacion en php, la única pega es que todavía faltan -al menos- dos entregas que eran las que tenía previsto.
Sobre lo del tutorial, te recomiendo que visites la pagina oficial de php (www.php.net), allí tienes toda la información necesaria, incluso en el apartado ‘Documentation’ puedes descargarte el manual completo de PHP en formato .html y formato .chm (archivo de ayuda).
Con respecto a JAVA, no conozco ninguno en profundidad, revisa si quieres La Web del Programador (www.lawebdelprogramador.com).
Salu2
Santi M.
OK MUCHAS GRACIAS, OTRA PREGUNTA, PARA DESENCRIPTAR COMO DEBO ESCRIBIR EL “CODIGO DE CRC32″
Hola,
Felicitaciones por toda la información disponible, quisiera que me ayudes con la encriptación, necesito aplicarla al nombre de un archivo, no a una contraseña. agradezco la explicacion porque es urgente y vital.
Gracias soledad
Hola Soledad.
Para encriptar un archivo tienes la función md5_file vista más arriba. Pero recuerda una cosa, y es que estas funciones son solo de encriptación, con lo que una vez encriptado el archivo no vas a poder desencriptarlo.
Hay funciones de encriptacion/desencriptación, pero todavía no las he trabajado. Revisa la página de PHP.net, quizá encuentres algo de información por allí.
Salu2
Santi M.
gracias por la info de tu pagina para mi que soy desarrollador las entiendo bien. gracias me aclaraste unas dudas con el md5 y el sha1
gracias de nuevo
Hola chistris.
Me alegro que te haya servido de mucho el artículo y gracias a tí por visitar el blog.
Un saludo,
Santi M.
Aqui en esta direccion esta un encriptador facil de usar
http://www.unidadlocal.com/?x=encriptarcodigohtml
Hola Omar!
Gracias por la URL, pero no me funciona ni en Firefox ni en IE.
Salu2
Santi M.
hola… agradecerte y felicitarte xq es muy intersante tu aporte, es de mucha ayuda……. pero tengo una gran incognita, una vez que encriptas una cadena de caracteres con “md5″ hay alguna forma de desencriptar esa cadena??….. gracias
Hola Luis.
La función md5 es irreversible, por lo que es imposible desencriptar.
Salu2
Santi M.