Saltar al contenido

¿Cómo descifro usando hashlib en python?

Luego de investigar con expertos en el tema, programadores de diversas ramas y profesores hemos dado con la respuesta al dilema y la plasmamos en este post.

Solución:

El punto de un hash como sha256 es que se supone que es una función unidireccional (aunque la existencia de true las funciones unidireccionales siguen siendo una pregunta abierta, consulte http://en.wikipedia.org/wiki/One-way_function).

Nota http://en.wikipedia.org/wiki/Cryptographic_hash_function:

La función hash criptográfica ideal tiene cuatro propiedades principales:

    1. es fácil calcular el valor hash para cualquier mensaje dado
    1. es inviable generar un mensaje que tenga un hash dado
    1. es inviable modificar un mensaje sin cambiar el hash
    1. es inviable encontrar dos mensajes diferentes con el mismo hash.

Si pudiera revertirlo, estaría infringiendo la regla 2. Estas reglas permiten que uno le diga a otra parte que tiene cierta información (como una contraseña), sin revelar la información. Por ejemplo, consulte wikipedia: http://en.wikipedia.org/wiki/Cryptographic_hash_function#Illustration

Si necesita invertibilidad, consulte Manera simple de codificar un string según una contraseña?, puedes usar algo débil como Vignere, pero también hay un ejemplo usando PyCrypto:

from Crypto.Cipher import AES
import base64

cipher = AES.new(secret_key,AES.MODE_ECB) # never use ECB in strong systems obviously
encoded = base64.b64encode(cipher.encrypt(msg_text))
# ...
decoded = cipher.decrypt(baes64.b64decode(msg_text))

Si desea una función hash reversible, consulte ¿Función hash reversible?

La respuesta corta es que no puede ‘descifrar’ un hash; es una función unidireccional. Hay una gran diferencia entre el cifrado y el hashing.

hash

Ver http://en.wikipedia.org/wiki/Cryptographic_hash_function

Nota: Es posible ‘BREAK’ ciertos algoritmos hash, pero esto no es descifrado. Encontrará más información en los enlaces, así como otros algoritmos que también son compatibles con python

Cifrado

y http://en.wikipedia.org/wiki/Encryption

Ejemplo

Un ejemplo útil de hashing es almacenar contraseñas en una base de datos, mientras que un ejemplo útil de encriptación es enviar sus datos bancarios a una tienda en línea para comprar algo.

Esta es una pregunta válida, aunque tal vez no se haya planteado correctamente.

OP, creo que lo que estás tratando de hacer es comparar un valor hash con uno sin hash.

hashed = hashlib.sha256('1234').hexdigest()
hashedstring = '1234' + ',' + hashed

ahora para verificar ese hash == valor original. Así que analice la pieza antes y después de la coma. Hash 1234 y compárelo con el valor hash.

def check_secure_val(h):
    commapos = h.find(",")
    val = h[0:commapos]
    hashval = h[commapos+1:-1]
    rehashval = hash_str(val)
    if rehashval == hashval:
        return val

donde la entrada h es una string de formato “val,(HASHEDSTRING)”

y hash_str es una función que genera hashes.

Puntuaciones y comentarios

Si conservas algún reparo o capacidad de renovar nuestro división te recordamos ejecutar una observación y con gusto lo analizaremos.

¡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 *