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.

Cómo iterar sobre las funciones de una biblioteca?

import hashlib

digest = [“sha1”, “sha256”, “md5”]

s = “5UA@/Mw^%He]SBaU”.encode(‘utf-8’)
h = “3281e6de7fa3c6fd6d6c8098347aeb06bd35b0f74b96f173c7b2d28135e14d45”

dictionary = open(“dictionary.txt”, “r”)
for i in digest:
for line in dictionary:
testString = bytes(line, ‘utf-8’)
h2 = hashlib.digest[i](testString + s).hexdigest()
print(h2)
if h in h2:
print(“the password is:”, line)

Estoy tratando de encontrar una forma de iterar los resúmenes de hash en hashlib. ¿Es una lista viable para esto? (Sé que no funciona porque le estoy pasando una cadena).

Alternativamente, ¿qué opciones existen para hacer este tipo de iteración?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una lista es una opción viable para iterar a través de los resúmenes de hashlib. En el código dado, la variable “digest” es una lista que contiene tres elementos de cadena: “sha1”, “sha256” y “md5”.

    El código luego usa un bucle anidado para iterar a través de cada resumen en la lista “digest” y cada línea en el archivo “dictionary”. Luego crea una cadena de prueba codificando la línea actual y verifica si el hash de esta cadena de prueba y la cadena codificada “s” coinciden con el valor de la variable “h”.

    Entonces, para responder a la pregunta, la lista “digest” es una forma válida para iterar a través de los resúmenes de hashlib. Sin embargo, debe tenerse en cuenta que el atributo “digest” de los objetos hashlib es un método en lugar de una propiedad, por lo que debe llamarse utilizando paréntesis en lugar de corchetes cuadrados.

    Otra opción para iterar a través de los resúmenes de hashlib es usar un diccionario que mapee los nombres de los resúmenes con sus funciones correspondientes, de esta manera:

    digests = {"sha1": hashlib.sha1, "sha256": hashlib.sha256, "md5": hashlib.md5}
    
    for name, function in digests.items():
        # hacer algo con la función
    

    Esto crea un diccionario donde las llaves son los nombres de los resúmenes y los valores son los objetos de función hashlib correspondientes. Luego puedes iterar a través de los elementos de este diccionario usando el método “.items()” y llamar a cada función en turno.

Comments are closed.