Java AES加密,Python解密不起作用

2024-04-19 09:16:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了多种方法来做到这一点,已经有三天多时间了。我哪儿也不知道。我使用Java使用AES/CBC/PKCS7Padding对某些数据进行加密,并尝试在Python中使用相同的方法进行解密,但这不起作用。我在用这条Pythonaes.py公司库http://anh.cs.luc.edu/331/code/aes.py
我得到了这个错误:

  File "/root/ascend/aes.py", line 384, in decrypt
  block[(i+(j*4))] = iput[(i*4)+j]
  exceptions.IndexError: list index out of range

以下是Java Aes代码:

^{pr2}$

下面是Java key gen,它还提供了python要使用的密钥:

        public String genAESKey() {
          String uuid = UUID.randomUUID().toString();
          return uuid.replace("-","");
        }

下面是要解密的python代码:

self.data = aes.decryptData(user.aes_key, base64.b64decode(self.data))
#Where user.aes_key is the 256bit Aes key generated by java.

有人能看一下并解释一下这是怎么回事吗?它们都使用相同的aes256密钥、pkcs7填充和CBC。如果有人知道一个更好的库可以使用这样的java代码,请务必展示。在

编辑:为了澄清这一点,Aes解密在Java中起作用,但在python中不起作用,python加密使用Aes密钥起作用,python解密也起作用。只是不是java->;python。以及自我数据是java加密的aes数据。在

编辑2: 只是试着用PyCrypto做这个。同样的错误正在发生。在

    return self._cipher.decrypt(ciphertext)
    exceptions.ValueError: Input strings must be a multiple of 16 in length

Tags: 数据方法key代码inpyself错误
1条回答
网友
1楼 · 发布于 2024-04-19 09:16:11

问题是由于某种原因Java填充了结果字符串的第一个字节。为什么?我一点也不知道,但在Python中将它剥离后,一切都很好。PyCrypto代码和Aes.py公司代码工作正常。在

相关问题 更多 >