Initially, I went in a completely different direction by converting to a decimal and then mapping to a base64 number, but I learned more about Base64’s input scheme while solving this. Eventually I figured out the solution, it wasn’t mathematical, it required learning about Base64.
The challenge is to map this:
To this Base64 value:
The solution became clearer when I read hint at the bottom:
Always operate on raw bytes, never on encoded strings. Only use hex and base64 for pretty-printing.
I converted the hex string into raw bytes using
binascii where I say the message:
I’m killing your brain like a poisonous mushroom
Charming. I then read the
encode function which seemed to be using
binascii as well. So I used that to convert to base64, and cleaned the result by converting it to a string.
import binascii input = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d" expected = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t" # Convert the hex to bytes bytes = binascii.a2b_hex(input) print(bytes) # => b"I'm killing your brain like a poisonous mushroom" # Pass the bytes to base64 base64 = binascii.b2a_base64(bytes, newline=False) print(base64) # => b'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t\n' # Convert to a string cleaned_result = base64.decode() print(cleaned_result) # => SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t print(cleaned_result == expected) # => True