2009-11-22 14 views
10

Cuando los usuarios se registren, ¿debo almacenar sus correos electrónicos en el archivo base tal como están o usarlos como hash? Quiero ser capaz de descifrarlo más tarde, entonces ¿debería usar md5?php - ¿Debería cifrar las direcciones de correo electrónico?

gracias!

+6

Hashing (más o menos) evita el descifrado. Entonces ciertamente no quieres hacer eso. – Quentin

+1

Odio que la gente vote una pregunta como esta. No es como si estuviera dando un consejo equivocado, está haciendo una pregunta y un concepto que quiere aclarar. I Up votó de nuevo a 0. –

+0

Debería hash() todos los correos electrónicos y mantener una tabla separada con las llaves/pares para que pueda ir más rápido. PD. Es una broma (codificador de humor) – Frankie

Respuesta

16

No, md5() - es one-way hash function. No puedes descifrar su valor. Por lo general, se usa para contraseñas que no necesitan ser descifradas. En su lugar se comparan los hashes como:

$salt = "adding some secret to increasse security"; 
if (md5($user_password . $salt) == $user_password_hash_from_db) { 
    ## password is ok 
} 

Si usted quiere ser capaz de descifrar su valor, a continuación, utilizar la función crypt PHP en su lugar. Pero puede requerir la instalación de módulos adicionales.

De cualquier forma, no veo ningún motivo práctico para cifrar el correo electrónico.

+2

, por supuesto, usar un hash salado para almacenar contraseñas sería una buena idea – tosh

+1

Sí, pretender que todos y su madre saben que "md5 ('contraseña') == '5f4dcc3b5aa765d61d8327deb882cf99'", porque todos los cracker que importen sabrán. – Kzqai

+0

@tosh: tienes toda la razón. He actualizado la respuesta. –

3

No es común cifrar las direcciones de correo electrónico. Si alguien realmente quiere mantener su correo electrónico privado, no lo daría en primer lugar en su sitio :)

+1

Los esquemas de spam moderno implican de manera diferente. Las listas de correo electrónico tienen valor en la privacidad que representan. El valor es menor, especialmente en comparación con las contraseñas, pero está ahí, por lo que un método de cifrado es beneficioso, pero con el correo electrónico, sin duda debe ser un método reversible. – Kzqai

0

Cuando usa md5 no podrá descifrarlo. md5 es una función one-way -hash.

0

md5 no es un método de encriptación, es un hash de una dirección. No hay ninguna razón para cifrar las direcciones de correo electrónico en la base de datos. Los dejaría como están.

1

MD5 es un hash, que hace que sea casi imposible recuperar el valor original. Debería usar un cifrado en lugar de un hash si desea recuperar el correo electrónico.

0

Si intenta descifrarlos más tarde, MD5 no será una opción, ya que solo hash cadenas, perderá los datos originales.

Le sugiero que intente algunas de las funciones de cifrado de PHP incorporadas para eso.

0

Las otras respuestas lo dicen todo.

Sin embargo, usted debe siempre cifrar hash de contraseñas con al menos md5() y una sal, como se señaló en la respuesta de Iván.

1

Acepto que los correos electrónicos son un problema de seguridad de la información (menor), ya que se convierte en información personal que usted ha lanzado al mundo si alguien tiene acceso a su base de datos, pero usted querrá un cifrado bidireccional/método de descifrado para poder retirar los correos electrónicos, como ha mencionado Ivan.

Solo tenga en cuenta que el hashing MD5 básico ya no es un hash seguro.

como Wikipedia dice de muchas maneras diferentes, ya no es segura (http://en.wikipedia.org/wiki/MD5):

US-CERT del Departamento de de Seguridad Nacional de Estados Unidos dijo MD5 "debe ser considerado criptográficamente roto e inadecuado para su posterior use, "[7] y la mayoría de las aplicaciones del gobierno de EE. UU. deberán pasar a la familia de funciones hash SHA-2 para 2010.[8]

Creo que uno de los principales problemas es que hay tablas arcoiris de hash md5 en estos días, por lo que desnudo md5 es muy susceptible a la fuerza bruta.

Considérelo una herramienta útil para pequeños conjuntos de datos obstruidos e higienizados, pero ya no es un hash realmente seguro. Puede haber aros especiales por los que pueda pasar tanto como usar una sal como realizar mh5 hashings anidados para hacerlo más seguro, aunque no soy un criptógrafo. Es posible que desee comprobar otros hilos SO como this uno para buenas soluciones de encriptación general.

+1

MD5 nunca fue 'cifrado seguro'; ya no es tan seguro como un hash. –

+0

Sí, es malo por no usar terminología precisa. Editado y hecho CW. – Kzqai

Cuestiones relacionadas