est-il possible de déchiffrer une chaîne qui était plus tôt cryptée avec l'algorithme SHA-1 en Java? P>
3 Réponses :
SHA1 est un Fonction de hachage cryptographique , et tout le point est que vous ne pouvez pas défaire. S'il était possible d'inverser le hachage (trouvez l'entrée pour un hachage donné), il ne serait pas utile. Si vous avez besoin de chiffrer quelque chose et de le déchiffrer plus tard, vous devez utiliser un Fonction de cryptage comme AES ou Toutefois, pour des entrées très simples, il peut être possible de Exemple de code Python: P> def crack_hash(hash_to_crack, hash_function, list_of_guesses):
# Try to hash everything in our guess list
for guess in list_of_guesses:
new_hash = hash_function(guess)
# if the hashes match, we found it
if new_hash == hash_to_crack:
return guess
# If none of them match, give up
return None
Cette méthode nécessiterait des quantités obscènes d'espace et de temps avec une liste raisonnablement de taille. Une alternative plus pratique consiste à utiliser un table arc-en-ciel afin d'appliquer un comprimé de mémoire temporelle. Cette méthode est inutile pour les hachages salés, bien que
@jsvk - Je ne dis pas que c'est une bonne idée. En fait, j'espérais que l'exemple illustrerait à quel point il est inutile que vous ayez une bonne idée de quoi deviner. Il pourrait être amélioré, mais de manière réaliste, personne n'utilise son propre biscuit de mot de passe - et certainement pas un écrit en python;)
Non, ce n'est pas possible, car Sha-1 est un hash - c'est un billet aller simple. Si vous souhaitez crypter et déchiffrer une chaîne, vous devez utiliser un algorithme de cryptage qui utilise la clé pour générer des données cryptées. Ensuite, vous pouvez chiffrer des données et après la déchiffrer avec succès. Par exemple AES. Vous pouvez lire sur AES depuis ici P>
Réponse courte: c'est impossible. P>
Parce que SHA-1 est un Fonction de hachage cryptographique , par le principe du pigeonhole, il est mathématiquement impossible à inverser. Il n'y a que 2 160 sup> SHA-1 possibles. Comme il existe un nombre infini de chaînes d'entrée possibles, il doit y avoir des collisions (multiples entrées de la même valeur). En général, il n'y a aucun moyen de savoir laquelle de ces chaînes était l'entrée originale. P>
Cependant, les cordes du monde réel ne sont pas complètement arbitraires. Si vous connaissez des informations sur votre chaîne d'entrée (par exemple, il était inférieur à 5 caractères), avec une probabilité élevée, l'entrée est unique. Malheureusement pour vous, les fonctions de hachage comme SHA-1 sont intentionnellement infaissibles d'inverser. (Il y a des attaques théoriques sur SHA-1, mais je ne pense pas qu'aucun n'est actuellement considéré comme presque faisable.) P>
Donc, si vous devez récupérer des données hachées, vous devez utiliser une force brute: essayez chaque chaîne de longueur de longueur inférieure à n em> et voyez si le hachage correspond. Mais il y a de nombreuses cordes de longueur jusqu'à n em>, donc cela devient rapidement infaisable. P>
Il existe un moyen possible de récupérer des données hachées avant la fin de l'univers fort>. Votre seul espoir est d'utiliser une méthode plus sophistiquée, telle que Tables arc-en-ciel . Ceci seul em> fonctionne si vous savez que votre chaîne d'origine était très courte (moins de 15 caractères). Même pour les cordes courtes, cela prendra une longue période (et des gigaoctets d'espace disque) pour pré-calculer la table. P>
Merci de mettre à jour: il est très bien possible, j'ai juste besoin de l'algorithme. SHA1-Decrypter est le lien vers la page où vous pouvez trouver le Decrypter en ligne
@VineEtverma: Ce n'est pas un décrypte; C'est une recherche inversée. Le code qu'il utilise est essentiellement, mappe
SHA-1 est un hachage, pas un algorithme de cryptage. Si vous essayez d'extraire une chaîne de son hachage SHA-1, bonne chance. Cela s'appelle une attaque pré-image.
C'est possible i>, mais nécessiterait des ressources et du temps de calcul, car les données SHA1-cryptées ne sont pas censées être déchiffrées une fois cryptées.
Je pense que la question devrait être à quel point il est essentiel de décrypter SHA1. Qu'est-ce que Java a à voir avec ça? Si vous avez un bon algorithme, vous pouvez utiliser n'importe quelle langue pour le coder.