Я нахожусь в процессе создания программы для перебора паролей с использованием golang. Формат хэшей паролей представляет собой хэш md5, примененный в 1000 раз к начальному паролю, а затем к используемому. (Код, который я показываю, применяет только это 5x)
md5(md5(md5(md5(....(md5(пароль))))))
func hash(pw string) string {
hasher := md5.New()
data := []byte(pw)
fmt.Printf("Initial data: %s\n", pw)
for i := 0; i < 5; i++ {
hasher.Reset()
hasher.Write(data)
sum := hasher.Sum(nil)
data = sum[:]
fmt.Printf("Iteration %x has the hash: %x\n", i+1, data)
}
return hex.EncodeToString(data)
}
Результат от этого отличается от того, что дает использование утилиты командной строки md5sum. Моя другая попытка состояла в том, чтобы использовать, потому что это было без гражданства, но я все еще начинаю отклоняться во втором раунде хеширования.
sum := md5.Sum([]byte(data))
Каков хороший/успешный способ вычисления этого повторяющегося хэша?