Als je ergens een account aan wilt maken, bijvoorbeeld omdat je je ergens wilt registreren, heb je een wachtwoord nodig. Dit wachtwoord wordt opgeslagen in een database. Heeft de websitebouwer het niet goed gedaan, dan wordt het wachtwoord opgeslagen in de database op de manier als jij het hebt geschreven. Dat noem je plain-text. Mocht een hacker dan bij die database kunnen, betekent het dat deze hacker alle wachtwoorden van gebruikers van een website heeft. Om dat te voorkomen, zorgen websitebouwers ervoor dat wachtwoorden die in de database worden gezet niet gemakkelijk te lezen zijn. Deze manier heet hashen. Hierbij pakken ze een wachtwoord (bijvoorbeeld password) en maken ze een hash hiervan. Bij programmeertalen kun je een functie maken. Stop je een tekst of een getal in deze functie, dan komt er andere tekst of getal uit. Dat kun je ook zien bij de programmeerchallenges. Het verschil met deze functie die een hash maakt, is dat je de functie niet om kunt draaien. Dat betekent dat wanneer je alleen de hash hebt van een wachtwoord, deze terug kan rekenen naar het oorspronkelijke wachtwoord.

Nu bestaan er verschillende soorten functies die verschillende hashes kunnen berekenen. Bekende zijn MD5, SHA of bcrypt. Niet allemaal zijn ze allemaal goed hoor! Verschillende onderzoekers zijn er al achter gekomen dat het soms niet heel moeilijk is om achter de oorspronkelijke tekst te komen. Is het wel moeilijk, dan kun je op een andere manier erachter komen wat het wachtwoord was, namelijk door vergelijken. Als je bijvoorbeeld het wachtwoord password invoert in de hashfunctie waarbij de functie SHA256, komt 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 eruit. Wil je erachter komen met alleen de hash wat het oorspronkelijke wachtwoord was, dan moet je verschillende wachtwoorden proberen. Dit kun je handmatig doen, maar veel computers doen dit automatisch met heel veel wachtwoorden per seconde!

Een database is uitgelekt door een hacker met allemaal wachtwoorden van gebruikers van een website. Het wachtwoord van de beheerder van de website is 142b1770f7426daaf0a03c03afbc3fe6c023de163a31b5d87517cf78d16dffdb. De website gebruikt SHA256 om de wachtwoorden te hashen. Kun jij achterhalen wat het oorspronkelijke wachtwoord was? Bedenk goed welke wachtwoorden veel worden gebruikt. Het wachtwoord bestaat uit 1 hoofdletter en 2 cijfers. Wanneer je de hash van dit wachtwoord hebt vergeleken met elkaar en ze overeenkomen, hoef je het wachtwoord alleen nog maar tussen flag{ en } te plaatsen en je hebt de challenge opgelost! Onderin staat de goede hash, zodat je gemakkelijk kunt vergelijken.