Skip to content

Como encriptar una contraseñas con php, muy sencillo.

diciembre 1, 2010

Cuando estas programando en php aplicaciones donde requieres guardar contraseñas en una base de datos, estoy seguro que te has preguntado ¿Cómo le hago para proteger las contraseñas?, pues déjame decirte que en php es muy sencillo. En este artículo te explico tres formas diferentes de como puedes realizar esto con éxito.

Por ejemplo, si tienes la necesidad de guardar la información de una contraseña en tu base de datos, pero que esta (a pesar de verla en la base de datos) sea ilegible a la vista normal, para aumentar la seguridad en la protección de los datos, puedes encriptar tu contraseña. Esto se simplifica cuando tienes que programar en php dichas tareas, ya que tiene las funciones crypt(), md5() y sha1() con la que puedes realizar esto fácilmente.

De echo esto da mayor seguridad ya que estas funciones son de una sola vía, es decir, no pueden ser desencriptados, no puedes regresarlos al valor original. Esto es lo que le da mas valor a la seguridad, ¿Por qué crees que la mayoría de las páginas te envían una nueva contraseña en lugar de recuperar la anterior, cuando se te olvida y pides ayuda?

Explico las tres funciones crypt(),md5() y sha1():

1.- crytp(): Esta función se manda llamar con 2 parámetros la primera es la cadena que necesitamos encriptar (este parámetro es obligatorio) y el otro parámetro es llamado “semilla” (este es opcional, si se omite php pone uno aleatorio aunque codifica diferente cada que se manda llamar) que es tomado en cuenta para la codificación, por ejemplo:

$encriptada1 = crypt(“password”); //esta es sin base de codificación
$encriptada2=crypt(“password”,”2A”); //con base 2A de codificación

Este seria el contenido de cada una de las variables (el de encriptada1 varia en cada actualización) :

$encriptada1 = “$1$ew5.P20.$Rc7No.2LVt8RqWdvlVw2K.”
$encriptada2 =” 2AZ1KrbPqjOiA”

2.- md5(): Esta es una de las funciones mas utilizadas para encritptar contraseñas ya que siempre genera el mismo resultado para la misma cadena y es de una sola vía, es decir, una vez codificada una cadena no es posible volver a descodificar. Un ejemplo es el siguiente:

$encriptada1 = md5(“password”);

La variable $encriptada1 tendría después de esta asignación la siguiente cadena: “5f4dcc3b5aa765d61d8327deb882cf99”

3.- sha1(): Esta forma de encriptar cada vez desplaza mas y mas a la función md5. Ya que ofrece un nivel mayor en cuanto seguridad, y en php es realmente sencilla de utilizar, veamos como se manda llamar:

$encriptada4 =sha1(“password”);

La variable $encriptada4, tendría la siguiente cadena codificada: “5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”

Como vez mandar  llamar estas funciones es muy sencillo. Y antes de terminar aclaro que no son las únicas formas de realizarlo, pero si son las utilizadas.

Recuerda siempre practicar para aprender y seguro que este artículo fue de utilidad para ti espero tus comentarios, dime que te gustaría que publicara o que se te dificulta mas, si ya sabes programar en php o si quieres aprender, yo estaré leyendo y contestando tus preguntas.

Atte, tu amigo:
Salvador López.

About these ads

From → inicial, Tips

5 comentarios
  1. Manuel permalink

    hOLA. Por favor quisiera me ayudaran con el codigo de un programa que haga uso de alguna de estas tres funciones para encriptar.
    Muchas Gracias.

  2. angela permalink

    muy buen documento, por fa especificame cual de todas sera mejor de usar o ventajas y desventajas de cada una gracias…

    • Pues la de Sha1 es un agoritmo mas complicado y cada vez es mas común. Pero el mas utilizado actualmente es el md5, así que entre esos dos el mejor es el que tú decidas, ambos son de una vía solo que el sha tiene 160 bits y el md5 128 bits, es decir la cadena sha es mas grande

  3. Juan Carlos Prada Marin permalink

    me gusto muchooooo excelente ..
    m gustaria saber como proteger mi web creadaa,,, me refiero a
    q cuando sea vendida la aplicacion q yo hize… yo solamente pueda hacerles
    cambios… nadie masssss.. gracias..

    • Hola Juan Carlos, si lo que deseas es codificar TODO tu código puedes realizarlo con la función base64_encode(), combinando varias de estos puedes lograr que sea casi imposible descifrarlo, aunque el código debe ser desencriptable para cuando tú necesitas hacerles cambio. Yo en lo personal solo he encriptado contraseñas, pero si me he topado con script en php completos codificados con la función que te he mencionado anteriormente. Igual investigo y escribo un articulo sobre ello, así que ya tengo tarea….

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 144 seguidores

A %d blogueros les gusta esto: