Cita: No es reversible... pero se puede hacer una comparacion entre hash, para validar.
Eso sería atacarlo por fuerza bruta... Posible, pero impracticable sin los recursos de IBM o de la CIA.
Me explico: Sólo usando una variación de 1 caracter entre dos password de 20 caracteres, obtienes dos claves diferentes como:
Código MySQL:
Ver originalmysql
> SELECT MD5('01234567890123456789') CLAVE1
, MD5('02234567890123456789') CLAVE2
;+----------------------------------+----------------------------------+
| CLAVE1 | CLAVE2 |
+----------------------------------+----------------------------------+
| be497c2168e374f414a351c49379c01a | 5a15c606315bacffcc9d46a3156861aa |
+----------------------------------+----------------------------------+
Como puedes apreciar son MUY diferentes.
Esto implica que para obtener la clave original que da por resultado la encriptada, necesitarías barrer una combinatoria equivalente a (20^40)-1 aproximadamente (cada caracter de los 20 tiene 40 variaciones posibles, como mínimo). Es decir, deberías probar 109.951.162.777.600.000.000.000.000.000.000.000.00 0.000.000.000.000.000.000.000.000 combinaciones posibles...
Muy bonito, pero impráctico.
Precisamente por eso es que los ataques por fuerza bruta no se pueden realizar sin un hardware o una masa de atacantes lo suficientemente poderosa. SIno, te imaginas que sería la forma más simple de quebrar claves.