我怎样才能破译加密文本?

时间:2016-10-19 04:53:24

标签: ruby encoding cryptography

我得到了以下加密字符串:

  

MDExMDExMTEwMTExMDAwMDAxMTAwMTAxMDExMDExMTAwMDEwMDAwMDAxMTEwMDExMDExMDAxMDEwMTExMDAxMTAx MTAwMDAxMDExMDExMDEwMTEwMDEwMQ ==

现在我想将这个字符串解密为原始字符串。我怎样才能做到这一点?并且我不知道使用哪种算法来加密原始字符串,加密字符串的长度为121个字符。

2 个答案:

答案 0 :(得分:4)

Artjom B.已在comment中注意到尾随等号可能表示Base64编码(快速Google search也表明了这一点)。幸运的是,Ruby有一个Base64库来解码它:

require 'base64'

string = 'MDExMDExMTEwMTExMDAwMDAxMTAwMTAxMDExMDExMTAwMDEwMDAwMDAxMTEwMDExMDExMDAxMDEwMTExMDAxMTAx MTAwMDAxMDExMDExMDEwMTEwMDEwMQ=='
decoded = Base64.decode64(string)
#=> "0110111101110000011001010110111000100000011100110110010101110011011000010110110101100101"

新字符串由0&1和#1组成,显然是另一种编码,这次是二进制编码。它可以是ASCII字符。让我们来看看前8"位":

decoded[0, 8] #=> "01101111"

转换为字节,即通过to_i的整数:( 2表示二进制)

decoded[0, 8].to_i(2) #=> 111

最后通过chr加入角色:

decoded[0, 8].to_i(2).chr #=> "o"

很好," o"是一个有效的ASCII字符,以下字符怎么样?

decoded[8, 8].to_i(2).chr  #=> "p"
decoded[16, 8].to_i(2).chr #=> "e"
decoded[24, 8].to_i(2).chr #=> "n"

那是"打开",一个英文单词。我想我们在这里有所作为。你可以自己解决剩下的问题。并提防小偷; - )

答案 1 :(得分:0)

如果您没有关于算法的任何信息很困难,但字符串看起来只是base64编码,如果您使用最终的解码器

  

0110111101110000011001010110111000100000011100110110010101110011011000010110110101100101

不知道是否有意义