Comment déchiffrer à l'aide hashlib en python?
Je sais comment chiffrer:
encrypted = hashlib.sha256('1234').hexdigest()
mais je ne suis pas sûr de la façon de déchiffrer ce??
decrypted = decrypt(encrypted)
- Ce n'est pas la façon de hachage œuvres. En général, le point de l'ensemble d'une valeur de hachage est qu'il ne peut pas être annulée. Le hachage n'est pas une technique de cryptage.
- wikipédia a un bel article à propos de hachages
- Il suffit de penser cela. Si vous pouviez "déchiffrer" un hachage, ce qui est très court, 32 octets pour SHA256, vous auriez ultime méthode de compression. Mais bien sûr, vous ne pouvez pas, pour tout type de données de plus de la table de hachage, il y a des collisions de hachage, en d'autres termes de données différentes qui produisent le même hash (mais avec de hachage cryptographique sécurisé comme SHA256, vous ne pouvez pas trouver ou de créer des collisions avec des actuelles ou prévisibles, ordinateurs).
- Pourquoi les collisions existent avec un exemple simple: en.wikipedia.org/wiki/Pigeonhole_principle
- Seul moyen pour revenir à la chaîne d'origine de retour de sha1 est à la force brute. Il n'y a pas de déchiffrer la fonction de fonction de hachage. C'est le point entier de hachage. Pourtant, sha1(petite chaîne) peut être brute forcés de revenir à la chaîne d'origine.
- Outre les points sur un hachage de ne pas être "cryptage" - un résultat du hachage peuvent être produites par un grand nombre de texte de saisie des valeurs de longueur arbitraire entrées, toute la valeur de hachage peut être produit par un nombre infini d'entrées (de longueur différente) !
Vous devez vous connecter pour publier un commentaire.
Le point de hachage comme sha256 est que c'est censé être un one-way function (bien que l'existence de véritables fonctions est encore une question ouverte, voir http://en.wikipedia.org/wiki/One-way_function).
Note http://en.wikipedia.org/wiki/Cryptographic_hash_function:
Si vous pouvez inverser, alors vous seriez en brisant la règle 2. Ces règles permettent de dire à l'autre partie qu'ils ont certaines informations (comme un mot de passe), sans révéler l'information. Par exemple, voir wikipédia: http://en.wikipedia.org/wiki/Cryptographic_hash_function#Illustration
Si vous avez besoin d'inversibilité voir Moyen Simple pour encoder une chaîne de caractères selon un mot de passe?, vous pouvez utiliser quelque chose faibles comme Vignere, mais il est aussi un exemple d'utilisation de PyCrypto:
Si vous voulez un réversible de la fonction de hachage, voir Réversible de la fonction de hachage?
ValueError: Input strings must be a multiple of 16 in length
La réponse courte est que vous ne peut pas "décrypter" un hash; c'est une façon de fonction. Il existe une différence majeure entre le chiffrement et de hachage.
De hachage
Voir http://en.wikipedia.org/wiki/Cryptographic_hash_function
Remarque: Il est possible de "CASSER" certains algorithmes de hachage, mais ce n'est pas le décryptage. Vous trouverez plus d'informations dans les liens ainsi que d'autres algorithmes qui sont également pris en charge par python
De chiffrement
et http://en.wikipedia.org/wiki/Encryption
Exemple
Un exemple utile de hachage est de stocker des mots de passe dans une base de données alors qu'un exemple utile de chiffrement est l'envoi de vos coordonnées bancaires à une boutique en ligne pour acheter quelque chose.
C'est une question valable, peut-être pas posé correctement.
OP, je pense que ce que vous essayez de faire est de vérifier une valeur de hachage à l'encontre d'un unhashed un?
maintenant de vérifier que haché == valeur d'origine. Afin d'analyser la pièce avant et après la virgule. Hachage 1234 et de la comparer à la valeur hachée.
Les hachages sont calculés en utilisant un moyen de fonctions, c'est à dire qu'il donnera la même sortie pour une entrée donnée, mais que c'est seulement une fonction, peu importe ce que vous faites, vous ne pouvez pas déchiffrer. On peut essayer de le décrypter par la force brute, je.e le calcul des tables de hachage de mots de dictionnaire et de le comparer avec le hash vous voulez déchiffrer.
Pour enregistrer le temps de calculer les valeurs de hachage de mots du dictionnaire, il y a des tables arc-en-disponible en ligne qui contient des hachages avec les mots.
lire: http://en.wikipedia.org/wiki/Rainbow_table
Vous pouvez également utiliser les services en ligne pour la force brute de déchiffrement de hachage. il ya beaucoup disponible et fonctionne bien si le mot que vous souhaitez décrypter appartient à un dictionnaire.
Pas-très-exacte Analogie: Cryptage, c'est comme quelqu'un qui porte un déguisement de ... en prenant une valeur de Hachage, c'est comme prendre leurs empreintes digitales !
Vous pouvez obtenir de l ' "original" personne par la suppression ou l'inversion de la dissimuler, mais vous ne pouvez pas le faire à partir d'un ensemble d'empreintes digitales !