使用XOR-cipher解密后无法获得正确的编码

时间:2016-08-01 16:32:38

标签: ruby encryption character-encoding

鉴于密文7b5a4215415d544115415d5015455447414c155c46155f4058455c5b523f151515151515151515151515151515151515151515151515151515151515一起得到6e4f57005448415400544845005041525459004953004a554d50494e472a(这里没有火箭科学)。

现在,我正在尝试将此十六进制编码字符串解码为普通字符串 - 结果应为Now that the party is jumping\n。不幸的是,它是

irb(main):012:0> ["6e4f57005448415400544845005041525459004953004a554d50494e472a"].pack('H*')
=> "nOW\x00THAT\x00THE\x00PARTY\x00IS\x00JUMPING*"

对于我来说,它足够接近破译它,但是对于英语字母频率评估员来说,这也足够糟糕得分。

对于我以前的所有字符串,我都使用了[str].pack('H*'),并且进展顺利。例如

irb(main):004:0> ["54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f672e"].pack('H*')
=> "The quick brown fox jumps over the lazy dog."

我猜测新的数据集有一些奇怪的编码,我无法破译和处理。

任何Ruby想法?

1 个答案:

答案 0 :(得分:3)

您可能只需要使用0x20对密钥流(以及密文)进行异或。这将把大写转换为小写,并将零转换为空格(0x20)。

因此密钥是0x35而不是0x15。