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.

Hashear cada número de la lista de números a sha256 utilizando hashlib en Python.

Mis hashes son diferentes al sha256 estándar.

¿Cómo puedo hashear cada número de la lista a sha256 con hashlib en python?

Puedes ver mi resultado y otros resultados de convertidores en línea:


<h1>hash 9999 de https://emn178.github.io/online-tools/sha256.html</h1> <pre><code>888df25ae35772424a560c7152a1de794440e0ea5cfee62828333a456a506e05 </code></pre> <h1>hash 9999 de https://www.online-convert.com/result#j=96f7a8bb-2c97-4c6c-ae6d-7deda4f62e3c</h1> <pre><code>888df25ae35772424a560c7152a1de794440e0ea5cfee62828333a456a506e05 </code></pre> <h1>hash 9999 de https://passwordsgenerator.net/sha256-hash-generator/</h1> <pre><code>888DF25AE35772424A560C7152A1DE794440E0EA5CFEE62828333A456A506E05 </code></pre> <p>mi hash sha256 de 9999:</p> <pre><code>877f59e9e62b9f0bfdc877653856410990e8aba4ac8b55ad06cd8cf5ecdfbc17 </code></pre>

este es mi código. ¿Alguien puede enseñarme cómo puedo solucionarlo?

import CSV
from hashlib import sha256

hash_dic = {}
numbers = []
count = 1

<h1>crear rango de números entre 1 y 9999</h1>

while count <= 9999:
    numbers.append(count)
    count += 1

<h1>crear diccionario de hashes sha256</h1>

for number in numbers:
    hashed = sha256(bytes(number)).hexdigest()
    hash_dic[number] = hashed

<h1>abrir archivo csv y ver hashes</h1>

with open("Desktop/passwords.csv") as passwrd:
    reader = csv.reader(passwrd)
    for row in reader:
        csv_hash = row[1]

    for key,value in hash_dic.items():
        if csv_hash == value:
            print(f"para {row[0]} la contraseña es {key}")
        else:
            pass

print(hash_dic)

<h1>print(number)</h1>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hashear cada número de una lista a sha256 con hashlib en Python, puedes usar el siguiente código:

    import hashlib
    
    numbers = range(1, 10000)
    hash_dic = {}
    
    # recorre los números y hashea cada uno usando sha256
    for number in numbers:
        hashed = hashlib.sha256(str(number).encode()).hexdigest()
        hash_dic[number] = hashed
    
    print(hash_dic)
    

    Este código creará un diccionario hash_dic donde las claves son los números del 1 al 9999 y los valores son sus respectivos hash sha256.

    La razón por la cual tus hashes son diferentes al estándar sha256 probablemente se debe a una diferencia en la codificación. En tu código, estás usando bytes(number) para convertir el número a bytes antes de hashearlo. Esto codificará el número en la codificación por defecto (que suele ser utf-8). Para obtener el mismo hash que los convertidores en línea, debes usar la misma codificación que ellos.

    En el fragmento de código anterior, usamos .encode() para convertir el número a bytes usando la codificación por defecto. Alternativamente, puedes especificar la codificación explícitamente, de esta manera:

    hashed = hashlib.sha256(str(number).encode('utf-8')).hexdigest()
    

    Esto asegurará que la codificación sea consistente y que obtengas el mismo hash que los convertidores en línea.

Comments are closed.