Saltar al contenido

Cómo usar el hash sha256 en Python

Siéntete libre de compartir nuestro espacio y códigos con otro, necesitamos tu ayuda para hacer crecer nuestra comunidad.

Solución:

El mensaje de error significa exactamente lo que dice: Tienes un Unicode string. No puede SHA-256-hash un Unicode stringsolo puede codificar bytes.

Pero, ¿por qué tienes un Unicode? string? Porque está abriendo un archivo en modo de texto, lo que significa que le está pidiendo implícitamente a Python que decodifique los bytes en ese archivo (usando su codificación predeterminada) a Unicode. Si desea obtener los bytes sin procesar, debe usar el modo binario.

En otras palabras, simplemente cambie esta línea:

with open('words','r') as f:

… a:

with open('words', 'rb') as f:

Puede notar que, una vez que solucione esto, el print la línea genera una excepción. ¿Por qué? porque estás tratando de agregar un bytes a un str. También le falta un espacio y está imprimiendo la línea sin eliminar. Podría arreglar todo eso usando dos argumentos para print (como en print(line.rstrip(), "is one of the words")).

Pero luego obtendrás una salida como b'xc3x85rhus' is one of the words cuando querías que se imprimiera Århus is one of the words. Eso es porque ahora tiene bytes, no cadenas. Dado que Python ya no decodifica por usted, deberá hacerlo manualmente. Para usar la misma codificación predeterminada que a veces funciona cuando no especifica una codificación para opensolo llama decode sin argumento Asi que:

print(line.rstrip().decode(), "is one of the words")

Si quieres leer información como Unicode string del archivo, esta línea de código funcionaría:
hashedWord = sha256(line.encode('utf-8')).hexdigest()

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *