es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Forma eficiente de almacenar hash: ¿valores de cadena para una búsqueda rápida posterior? (Python)

Estoy tratando de aprender cómo funciona el ataque por fuerza bruta de hashes en Python. Hasta ahora, tengo un programa que puede generar todas las cadenas posibles de una determinada longitud, hacerles un hash y guardarlos en un archivo. Sin embargo, almacenar la tabla de hashes generada en texto plano ocupa predeciblemente una gran cantidad de espacio en disco (más de lo debido). No puedo usar pickle para almacenar un diccionario en un archivo binario porque toda la tabla tendría que ser almacenada en la memoria RAM. ¿Cuáles son algunas formas eficientes de almacenar los hashes generados y sus correspondientes cadenas en un archivo? También necesito buscar los hashes sin cargar todo en la memoria, pero cada vez que lo intento, el script se queda sin memoria RAM y se bloquea.

TL;DR: ¿Cuál es la forma más eficiente de almacenar pares de claves y valores de hashes en un archivo y buscarlos más adelante?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Python, hay varias formas eficientes de almacenar pares clave-valor de hashes en un archivo y luego buscarlos sin quedarse sin memoria RAM. Una opción es utilizar un sistema de gestión de bases de datos como SQLite. Con SQLite, puedes crear una base de datos y una tabla para almacenar los valores de hash y sus cadenas correspondientes. Mediante consultas SQL, puedes buscar fácilmente un valor de hash o una cadena específica sin cargar toda la tabla en la memoria.

    Otra opción es utilizar una base de datos clave-valor como Redis o LevelDB. Estas bases de datos tienen una huella de memoria reducida y permiten una búsqueda eficiente en conjuntos de datos grandes. También se pueden configurar para almacenar datos en disco, lo que las hace perfectas para este caso de uso.

    Finalmente, si estás limitado a usar archivos de texto plano, puedes utilizar un formato de datos que ocupe menos espacio que el texto plano. Por ejemplo, puedes utilizar el formato JSON o CSV, que son más compactos que el texto plano. Alternativamente, puedes comprimir los datos utilizando gzip o bzip2 para reducir su tamaño en disco. De esta manera, puedes almacenar tablas hash grandes en un formato compacto que se puede cargar fácilmente en la memoria cuando sea necesario.

Comments are closed.