Semaine 17 - Advent of Code 2016, Day 5
Vous êtes devant une porte qui semble avoir été conçue par des ingénieurs ayant acquis leur savoir en écoutant des films des hackers.
Le mot de passe de 8 caractères est généré un caractère à la fois à partir du hash MD5 d'un code de porte suivi d'un index numérique incrémental. Un hash désigne le prochain caractère du mot de passe lorsque sa représentation hexadécimale débute par 5 zéros consécutifs. Dans ce cas, le 6e caractère du hash est le prochain caractère du mot de passe.
Par exemple, pour le code "abc" :
- Le premier index produisant un hash commençant par cinq zéros est 3231929 que l'on trouve avec le hash MD5 de "abc3231929". Le sixième caractère du hash qui sera aussi le premier caractère du mot de passe est le nombre "1" ;
- 5017308 produit le prochain hash intéressant commençant par "000008f82..." alors le second caractère sera le nombre "8" ;
- Le prochain hash commençant par cinq zéros vient de "abc5278568" découvrant la lettre "F" ;
- Cet exemple se termine avec le mot de passe 18F47A30.
À partir d'un code de porte donné, quel est le mot de passe ?
Lorsque la porte s'ouvre, une seconde porte se présente à vous. Celle-ci utilise un meilleur mécanisme de sécurité. Quel système sérieux encrypterait un mot de passe dans le bon ordre ?
Plutôt que de générer le mot de passe de gauche à droite, le hash indique aussi la position où le caractère se positionnera dans le mot de passe. Il faut encore chercher les hash commençant par cinq zéros mais le 6e caractère représente la position où insérer le caractère se trouvant à la septième position. Si un caractère avait déjà été découvert pour cette position, il ne faut pas le remplacer.
En utilisant cette méthode améliorée, quel est le nouveau mot de passe ?