// calculateHash() beräkna hars för det lösenordet som finns i // (passwordHashData.Password) public void calculateHash(PasswordHashData passwordHashData) { // Gör om password till en byte[] med hjälp av Encoding klassen byte[] bytes = Encoding.UTF8.GetBytes(passwordHashData.Password); // Det skapas tre olika funktionen i klassen och här anropas dessa och skickas "bytes" // till dessa fuktioner som inparametern och får tillbaka motsvarande "hash" passwordHashData.HashSha384 = getHashSha384(bytes); passwordHashData.HashSha256 = getHashSha256(bytes); passwordHashData.HashSha512 = getHashSha512(bytes); }
// Funktionen som körs av varje thread(createHash()), // createHash() Det är en funktion som anropas av alla thread. private void createHash(int threadID, // Id för tråden String firstPassword, // Första lösenordet som skall skapas int noOfPasswords, // Antal lösenord som funktionen skall skapa List <PasswordHashData> listOfPasswords) // Lista som skall fyllas med skapade lösenord { try { // skapa upp en new PasswordGenerator och ange att första lösenorden // som skall skapas är (firstPassword) PasswordGenerator threadPasswordGenerator = new PasswordGenerator(firstPassword); // Skapa en new HashGenerator() HashGenerator hashGenerator = new HashGenerator(); // loopa för varje lösenord som skall skapas och beräknas hash för. // spara resultatet i listOfPasswords. for (int i = 0; i < noOfPasswords; i++) { // Skall skapa passwordHashData för varje lösenord PasswordHashData passwordHashData = new PasswordHashData(); // Hämta nuvarande lösenord från threadPasswordGenerator // från class PasswordGenerator och sparar i passwordHashData // i property Password i PasswordHashData class. passwordHashData.Password = threadPasswordGenerator.GetCurrentPassword(); // Anropar calculateHash() i klassen HashGenerator. // calculateHash() kommer att beräkna hashar för lösenordet // som finns sparat i passwordHashData.Password. // calculateHash() kommer att spara hasharna i passwordHashData.HashSha256, // passwordHashData.HashSha384, passwordHashData.HashSha512 hashGenerator.calculateHash(passwordHashData); // Addar allt som passwordHashData fått i listOfPasswords listOfPasswords.Add(passwordHashData); // Säg till threadPasswordGenerator att skapa nästa lösenord threadPasswordGenerator.NextPassword(); // continue++ } } finally { // nät thread är färdigt så räknar ner antalet aktiva threads -1 ActiveTreadCount--; } }