在Ruby中有没有一种方法可以在没有密钥的情况下解密编码字符串?

在Ruby中有没有一种方法可以在没有密钥的情况下解密编码字符串?,ruby,encryption,base64,aes,blowfish,Ruby,Encryption,Base64,Aes,Blowfish,问题是,字符串已按以下顺序通过三种不同的加密:Original->Base64->AES-256->Blowfish(无钥匙)->Final。编写一个方法,将此三重编码字符串神秘_string=“OXBVGH7URIGQMRZCQOXUXOUOVJT8Q4JKN5MWD1XP8BG9YHWHSSYAKFWE+AMpr25HruA”完全解密为其原始状态 我查看了aes256和blowfish的不同库/文档,但所有这些库/文档都需要密钥。唯一不需要密钥的是Base64(即Base64.encode6

问题是,字符串已按以下顺序通过三种不同的加密:Original->Base64->AES-256->Blowfish(无钥匙)->Final。编写一个方法,将此三重编码字符串
神秘_string=“OXBVGH7URIGQMRZCQOXUXOUOVJT8Q4JKN5MWD1XP8BG9YHWHSSYAKFWE+AMpr25HruA”
完全解密为其原始状态


我查看了aes256和blowfish的不同库/文档,但所有这些库/文档都需要密钥。唯一不需要密钥的是Base64(即
Base64.encode64('some string')
)。不确定从这里走到哪里。

首先,在没有密钥的情况下破解AES-256和Blowfish的唯一方法是使用蛮力枚举每个可能用作密钥的32字节组合。从理论上讲,这意味着它在我们的一生中不会破裂。可能有一些漏洞,你可以利用,因为你也有纯文本,但我怀疑你会有在现实生活中的情况

第二,也是最重要的一点,只是浏览那个网站,你实际上没有足够的信息来解码字符串,即使你知道密码

AES256密码功能的各种操作模式需要32字节(有时也需要64字节)密钥。您使用的秘密(您可能刚刚将其留空)需要转换为32字节的加密密钥。这是使用散列算法完成的,但我们不知道使用哪种算法。希望该站点使用了一个密钥派生函数,它提供了一些安全好处。然而,密钥派生函数需要多个参数,我们需要知道输入哪些参数以及密码才能获得正确的加密密钥

最后,我们不知道这个秘密在散列之前是否与salt连接在一起。在不知道是否使用了salt以及salt是什么的情况下,我们无法确定用于加密纯文本的正确32字节密钥

总之,您的问题的答案是:不,在不知道密钥的情况下,没有快速解密该字符串的方法

然而,加密是一个非常棒的学习主题

我鼓励您在ruby文档中查找最新版本。它们实际上相当不错(除了我在下面提到的那些禁忌之外)

这是我提到的关键派生函数之一

使用AES加密时,您很可能希望使用经过身份验证的加密

有两个注意事项:

  • 不要随意使用密码。。。了解他们的长处和短处
  • 不要使用AES-128-EBC-

另一个好的加密库是。

您对问题的陈述并没有说您不知道AES-256和Blowfish的密钥。我认为没有这些密钥解密是不可能的。你确定你不知道这两把钥匙吗?是的。这就是我所有的信息。我能够用这个来解码编码的字符串。下面是它是如何被分解的
blowfish_str=“oxbvgh7urigqmrzcqoxuovjt8q4jkn5mwd1xp8bg9ywhssyakfwe+AMpr25HruA”
aes256“是的,我也得到了同样的。这个问题只是一个Ruby编码练习,还是你正在学习加密算法的课程?不管是哪种方式,您似乎被要求研究这两种加密方法的破译算法。非常奇怪。这是一个Ruby编码练习,老实说,我在Ruby中找不到任何库,也找不到任何gems可以在没有给定密钥的情况下解密aes256和blowfish加密。作为一个教计算机语言的练习,我觉得这是一个巨大的时间浪费。