我得到了以下加密字符串:
MDExMDExMTEwMTExMDAwMDAxMTAwMTAxMDExMDExMTAwMDEwMDAwMDAxMTEwMDExMDExMDAxMDEwMTExMDAxMTAx MTAwMDAxMDExMDExMDEwMTEwMDEwMQ ==
现在我想将这个字符串解密为原始字符串。我怎样才能做到这一点?并且我不知道使用哪种算法来加密原始字符串,加密字符串的长度为121个字符。
答案 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
不知道是否有意义