gpt4 book ai didi

java - 尝试使用带有偏移量的 PyCryptodome AES ECB 解密

转载 作者:行者123 更新时间:2023-12-01 17:12:04 25 4
gpt4 key购买 nike

作为对此的一些上下文,我正在将 java 文件转换为 python,并且正在执行最后一个操作。我的位置大约是 200 LOC,所以这使得它更加边缘化......

无论如何,在java中的操作是:

Cipher cipher = Cipher.getInstance("AES/ecb/nopadding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keys[i], "AES"));

//doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
cipher.doFinal(save, saveOffset, 16, save, saveOffset);

在 python 中我有这个:

from Crypto.Cipher import AES
cipher = AES.new(bytes(keys[i]), AES.MODE_ECB)
cipher.decrypt(?????)

这是从解密()下的包中获取的:

:Parameters:
ciphertext : bytes/bytearray/memoryview
The piece of data to decrypt.
The length must be multiple of the cipher block length.
:Keywords:
output : bytearray/memoryview
The location where the plaintext must be written to.
If ``None``, the plaintext is returned.
:Return:
If ``output`` is ``None``, the plaintext is returned as ``bytes``.
Otherwise, ``None``.

正如你所看到的 .decrypt() 并没有真正的偏移量输入,但我想知道是否有办法解决这个问题?

这就是我决定在 SO 上发帖的原因,我可以发送:

temp_bytes = save[offset]
temp_decrypt = cipher.decrypt(temp_bytes)
save[offset] = temp_decrypt

或者解密时它是否使用整个文件作为上下文,我会得到错误的输出?我很想这样做并测试它,但输出只是乱码,我必须编写另一个程序来解析(另一个 java 到 python 项目)。

最佳答案

最终起作用的是:

save[saveOffset:saveOffset+16] = cipher.decrypt(save[saveOffset:saveOffset+16])

没想到这么简单

关于java - 尝试使用带有偏移量的 PyCryptodome AES ECB 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61419099/

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