Si toma las direcciones n , la probabilidad de una colisión (dos direcciones distintas que incluyen el hashing en el mismo valor) está cerca de n 2 * 2 -159 (para valores prácticos de n ). En la práctica, puede ignorar totalmente el riesgo de una colisión (su riesgo de ser muerto por un oso rabioso es mucho mayor que eso).
Tenga en cuenta que:
-
SHA-1 tiene algunas debilidades criptográficas, que hacen que sea más fácil para un individuo malintencionado crear a propósito dos direcciones de correo electrónico distintas que tengan el mismo valor. Esta es todavía una debilidad teórica, porque mientras el método descrito es más rápido que el costo teórico de 280 , todavía conlleva el número sustancial de 2 61 evaluaciones de la función hash. Además, podría ser difícil adaptar la colisión computada al formato de las direcciones de correo electrónico. De todos modos, puede ser un poco más cauteloso usar SHA-256 en lugar de SHA-1 (y se verá mejor si lo auditan).
-
Las direcciones de correo electrónico pueden no distinguir entre mayúsculas y minúsculas. En particular, el nombre de dominio (después de '@') es, por ley, no distingue mayúsculas y minúsculas, por lo que example.com
, Example.COM
y exAmPLE.cOM
son todos equivalentes. Para lo que aparece antes del signo '@', esto depende del sitio. Es posible que desee realizar alguna normalización antes del hash, y es posible que no haya una buena solución que funcione para todas las direcciones de correo electrónico existentes.
Editar: aunque esto responde a su pregunta exacta, le recomendamos que consulte la respuesta de @CodeInChaos, que intenta ver un poco más en su problema: si es posible proporcionar una La dirección de correo electrónico y verifica que coincida con un hash almacenado, entonces hace posible "probar" las direcciones de correo electrónico potenciales contra el valor de hash, y tiende a funcionar. Esta es una variante del ataque de diccionario y puede o no ser un gran problema con su modelo de seguridad.