0%

Problem 59


Problem 59


XOR decryption

Each character on a computer is assigned a unique code and the preferred standard is ASCII (American Standard Code for Information Interchange). For example, uppercase $A = 65$, asterisk (*) $= 42$, and lowercase $k = 107$.

A modern encryption method is to take a text file, convert the bytes to ASCII, then XOR each byte with a given value, taken from a secret key. The advantage with the XOR function is that using the same encryption key on the cipher text, restores the plain text; for example, $65$ XOR $42 = 107$, then $107$ XOR $42 = 65$.

For unbreakable encryption, the key is the same length as the plain text message, and the key is made up of random bytes. The user would keep the encrypted message and the encryption key in different locations, and without both “halves”, it is impossible to decrypt the message.

Unfortunately, this method is impractical for most users, so the modified method is to use a password as a key. If the password is shorter than the message, which is likely, the key is repeated cyclically throughout the message. The balance for this method is using a sufficiently long password key for security, but short enough to be memorable.

Your task has been made easy, as the encryption key consists of three lower case characters. Using cipher.txt (right click and ‘Save Link/Target As…’), a file containing the encrypted ASCII codes, and the knowledge that the plain text must contain common English words, decrypt the message and find the sum of the ASCII values in the original text.


异或解密

计算机上的每个字符都被指定了一个独特的代码,其中被广泛使用的一种是ASCII码(美国信息交换标准代码)。例如,大写字母$A = 65$,星号(*)$ = 42$,小写字母$k = 107$。

一种现代加密方法是将一个文本文档中的字符先转化为ASCII码,然后将其与一个根据密钥确定的值进行异或操作。使用异或进行加密的好处在于,只需对密文使用相同的密钥再加密一次就能得到明文,例如,$65$ XOR $42 = 107$,而$107$ XOR $42 = 65$。

为了使加密难以破解,密钥应当和明文一样长,由随机的字节构成。用户会把加密过的信息和密钥放置在不同的地方,解密时二者缺一不可。

不幸的是,这种方法对大多数人来说并不实用,因此一个略有改进的方法是使用一个口令作为密钥。口令的长度很有可能比信息要短,这时候就循环重复使用这个口令进行加密。这种方法需要达到一种平衡,一方面口令要足够长才能保证安全,另一方面需要充分短以方便记忆。

你的破解任务要简单得多,因为密钥只由三个小写字母构成。文本文件cipher.txt中包含了加密后的ASCII码,并且已知明文包含的都是常见的英文单词。解密这条消息并求出原文的ASCII码之和。