当前位置: 首页 > 知识库问答 >
问题:

如何解密用ruby中的“rijndael-128-cbc”加密的数据

贺奕
2023-03-14

我需要用'rijndael-128-cbc'算法解密php加密的数据。

现在我有一个将php代码转换为ruby代码的问题。ruby OpenSSL::Cipher不支持rijndael-128-cbc,所以我使用“aes-128-cbc”。我听说AES是基于Rijndael密码的,所以我想我可以用Rijndael-128-cbc将解密转换为AES-128-cbc。

enc = OpenSSL::Cipher.new "AES-128-CBC"
enc.encrypt
puts enc.key_len

它的产量是16

然而,在php中

echo mcrypt_get_key_size('rijndael-128', 'cbc')

这个有32个。

'rijndael-128'和"AES-128-CBC"有什么区别吗?

和 如何将莱茵代尔-128-cbc 描述转换为红宝石?

共有1个答案

宰宣
2023-03-14

我不是Ruby开发人员,所以我不能帮助你使用ruby代码,但我可以给你一些关于Rijndael和PHP的mcrypt扩展的指示......

是的,AES基于Rijndael-128,因此Rijndael-128和AES-128是一回事。

需要注意的是,Rijndael的变体中的数字指的是密码的块大小,而对于AES -是密钥大小,所以(比如)Rijndael-192不是AES-192;AES的块大小总是16字节或128位。

话虽如此,莱茵代尔-128也可以是AES-192和AES-256,区别仅在于密钥大小。

php 手册中mcrypt_get_key_size()中所述,该函数返回所提供密码的最大密钥长度...

AES-256 == Rijndael-128 with a 32-byte key

这就是为什么它返回32。对于AES-128,密钥大小当然是16-你可以硬编码。

希望这能让你明白一点。

 类似资料:
  • 我用java编写了这段代码,以便解密密文。我有钥匙。对我来说,一切都是正确的,但我有我要解释的问题。 这是我的代码: 我收到以下错误: 出了什么问题?我知道这个问题在某种程度上与衬垫有关,但我不知道确切的解决方案。我只有一个密文IV和密钥。

  • 我正在尝试在python中实现此代码(我是python新手),它给我以下错误: attribute error:“str”对象没有属性“decode” 如果我们删除 只是为了避免这样的错误: 但它给我以下错误: ValueError:IV必须为16字节长 因为算法需要,我必须删除 有没有人知道我该怎么做才能使这段代码工作?

  • 我只需要通过代码加密AES CBC 128位模式的字符串。我使用openssl库完成了这项工作,但无法获得正确的输出。 到目前为止,我已经完成了。 我的十六进制输出是:B0 15 751B50 80 D4 FF 81 68 146BB71B95 99 37 38 但正确的输出是:< code > 73 5C 04 F9 57 18 43 7C EE 68 27 59 2B 41 A8 DA (通过

  • 我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/

  • 问题内容: 我正在尝试在java中加密数据并在ruby中解密数据。 我的代码是…用Java加密 结果是 我希望在Ruby中解密(加密的字符串) Ruby代码是…(错误) 我希望得到 但它返回错误 我认为问题是cipher.padding和key / iv的类型。但是我不知道如何完成红宝石代码。 请让我知道如何完成此代码。 谢谢。 问题答案: Ruby代码有两个问题。 首先,应该使用AES 128时