gpt4 book ai didi

ruby - Ruby 中的单 block AES 解密

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:52 34 4
gpt4 key购买 nike

我需要尝试一些 AES 片段。

我有一些密文 c 和一个 key k。密文已使用 AES-CBC 加密,并在前面加上 IV。不存在填充,纯文本的长度是 16 的倍数。

所以我这样做:

aes = OpenSSL::Cipher::Cipher.new("AES-128-CCB")
aes.decrypt
aes.key = k
aes.iv = c[0..15]
aes.update(c[16..63]) + aes.final

它工作得很好。

现在我需要手动执行 CBC 模式,所以我需要单个 block 的“普通”AES 解密。

我正在尝试这个:

aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB")
aes.decrypt
aes.key = k
aes.iv = c[0..15]
aes.update(c[16..31]) + aes.final

它失败了

in `final': bad decrypt (OpenSSL::Cipher::CipherError)

我该怎么做?

最佳答案

我假设您遇到了 final 错误,因为它默认使用填充。

decrypter.padding = 0

同样要使用 ECB 模式手动执行 CBC 模式,设置 IV 将不起作用,您需要使用 IV ( or the previous ciphertext block if you end up decrypting more than one block ) 对解密 block 进行异或运算。

关于ruby - Ruby 中的单 block AES 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999431/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com