Para estar seguro de que entendí bien las tablas Rainbow, decidí hacer un pequeño proyecto en Java, pero tengo una pregunta: ¿cómo elegir el tamaño de la cadena? Y esto dará el número de líneas para obtener un buen porcentaje de cobertura
Imagina que uso el tamaño de contraseña =6
y el espacio 0123456789
, las posibilidades son 1 000 000
(el tamaño y el espacio son bajos porque es más fácil entrenar y depurar, en un espacio grande sería más difícil, espero Tener algo que funcione para probarlo más grande.
¿Cómo puedo elegir entre:
- 4000 cadenas de tamaño 250
- 1000 cadenas de 1000
- 400 cadenas de tamaño 2500
- ...
Estoy usando sha1
para el hash, y para reducir tomo los 6 primeros dígitos y agrego un valor de index
(proviene del ciclo de la cadena)
public static String reduce(String hash, BigInteger spaceSize, int passSize, int indexFunction) {
int v = BigInteger.valueOf((Long.parseLong(hash.replaceAll("\D", "").substring(0, passSize), 10) + indexFunction)).mod(spaceSize).intValueExact();
DecimalFormat format = new DecimalFormat("000000");
return format.format(v);
}