diff options
author | siddharth <s@ricketyspace.net> | 2021-06-19 11:47:30 -0400 |
---|---|---|
committer | siddharth <s@ricketyspace.net> | 2021-06-19 11:47:30 -0400 |
commit | d90053b1bb6620dc999f723d64aadccfbe6e0bbf (patch) | |
tree | 9d4d593727052cd471de513e2552ce251986e11e /challenge/c19.go | |
parent | e285c8aa4a03b4f96b1ab36a0fd4b1a6e810ec4b (diff) |
lib: add PrintableAscii, AsciiScores
Extracted from challenge 19
Diffstat (limited to 'challenge/c19.go')
-rw-r--r-- | challenge/c19.go | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/challenge/c19.go b/challenge/c19.go index 544e30b..e785898 100644 --- a/challenge/c19.go +++ b/challenge/c19.go @@ -52,27 +52,6 @@ func C19() { "VHJhbnNmb3JtZWQgdXR0ZXJseTo=", "QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=", } - // ASCII characters ordered by frequency - // (https://mdickens.me/typing/letter_frequency.html) - ascii := []byte{ - ' ', 'e', 't', 'a', 'o', 'i', 'n', 's', 'r', 'h', 'l', 'd', - 'c', 'u', 'm', 'f', 'g', 'p', 'y', 'w', 'b', ',', '.', - 'v', 'k', '-', '"', '_', '\'', 'x', ')', '(', ';', '0', 'j', - '1', 'q', '=', '2', ':', 'z', '/', '*', '!', '?', '$', '3', - '5', '>', '{', '}', '4', '9', '[', ']', '8', '6', '7', '\\', - '+', '|', '&', '<', '%', '@', '#', '^', '`', '~', - } - // Key: ASCII character; Value: score - asciiScores := make(map[byte]int, 0) - for pos, a := range ascii { - asciiScores[a] = 255 - pos - // Also add the uppercase version of ascii - // character if it exists. - au := lib.ByteToUpper(a) - if a != au { - asciiScores[au] = 255 - pos - } - } // Utility functions. cipherStreamByteGroups := func(ciphers [][]byte) map[int][]byte { @@ -91,7 +70,7 @@ func C19() { po := make([][]byte, len(g)) // Potential Output block bytes for i, c := range g { po[i] = make([]byte, 0) - for _, a := range ascii { + for _, a := range lib.PrintableAscii { o := c ^ a po[i] = append(po[i], o) @@ -117,7 +96,7 @@ func C19() { scr := 0 for _, c := range g { p := c ^ o - if s, ok := asciiScores[p]; ok { + if s, ok := lib.AsciiScores[p]; ok { scr += s } if pos == 0 && lib.ByteIsUpper(p) { |