From bac9d753650e22575602488fc2517e4bd8856203 Mon Sep 17 00:00:00 2001 From: Nathan Lasseter Date: Fri, 4 Dec 2015 14:44:02 +0000 Subject: Day 4, go this time because fast. --- day4.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 day4.go diff --git a/day4.go b/day4.go new file mode 100644 index 0000000..ebf8810 --- /dev/null +++ b/day4.go @@ -0,0 +1,38 @@ +package main + +import ( + "bytes" + "crypto/md5" + "fmt" + "strconv" +) + +func hash(secret []byte, x int64) [16]byte { + str := strconv.AppendInt(secret, x, 10) + return md5.Sum(str) +} + +func check(hash [16]byte, target []byte, length int) bool { + str := []byte(fmt.Sprintf("%x", hash)) + return bytes.Equal(str[:length], target[:length]) +} + +func main() { + secret := []byte("iwrupvqb") + target := []byte("000000") + x := int64(1) + got5, got6 := false, false + + for !(got5 && got6) { + h := hash(secret, x) + if !got5 && check(h, target, 5) { + fmt.Println("Lowest number for 5-zeroes hash:", x) + got5 = true + } + if !got6 && check(h, target, 6) { + fmt.Println("Lowest number for 6-zeroes hash:", x) + got6 = true + } + x += 1 + } +} -- cgit v1.2.1