Para construir una tabla de arco iris, ¿cómo decidir el tamaño de la cadena y el número de líneas?

2

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);
}
    
pregunta azro 27.09.2018 - 18:44
fuente

2 respuestas

1

La elección del tamaño de la cadena, t, afecta el tamaño de almacenamiento y el tiempo de búsqueda. En el y tienes que calcular el elemento de cadena 1000000.

  • 4000 cadenas de tamaño 250; Tamaño de almacenamiento de 8000 del resultado hash, clasificación de 4000 elementos, tiempo de búsqueda en un máximo de 250 cadenas y 250 * log_2 (4000) tiempo de búsqueda.
  • 1000 cadenas de tamaño 1000; Tamaño de almacenamiento 2000 del resultado hash, ordenando 1000 elementos; tiempo de búsqueda a lo sumo 1000 tiempo de cadena y 1000 * log_2 (1000) tiempo de búsqueda.
  • 400 cadenas de tamaño 2500; 800 tamaño de almacenamiento del resultado hash, clasificando 400 elementos; tiempo de búsqueda como máximo 2500 tiempo de cadena y 2500 * log_2 (400) tiempo de búsqueda.

El uso puede usar este sitio para calcular los parámetros.

    
respondido por el kelalaka 27.09.2018 - 19:12
fuente
0

La longitud de la cadena es básicamente el tiempo. Una cadena más larga toma más tiempo para calcular. Para recuperar una contraseña cuando se encontró en una cadena, la longitud de la cadena determina cuántos cálculos debe realizar para calcular el original.

La cuenta de la cadena es básicamente la cobertura. Si tiene más cadenas, suponiendo que todo lo demás se mantenga igual, tendrá una mejor cobertura. Sin embargo, también puede obtener una mejor cobertura utilizando cadenas más largas, pero luego aumenta el tiempo.

Para obtener más información sobre las tablas de arco iris, consulte esta pregunta: ¿Qué son las tablas de arco iris y cómo se utilizan? Creo que mi respuesta en esa página también responde a tu pregunta sobre cómo elegir el recuento y la longitud de la cadena, bajo el encabezado " Propiedades de escalado ".

    
respondido por el Luc 27.10.2018 - 23:23
fuente

Lea otras preguntas en las etiquetas