Python到Java加密/解密,确保密码匹配?
我正在看一些常见的python示例代码,它进行加密,设置如下:
encryptor = AES.new(key, AES.MODE_CBC, iv)
chunksize = 64*1024
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += ' ' * (16 - len(chunk) % 16)
outfile.write(encryptor.encrypt(chunk))
试图设置java代码来解密上面的输出,我看到了以不同方式初始化密码填充的示例:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
或:
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
尽管所有python代码段都是以相同的方式实现的
我希望在这种情况下使用“NoPadding”。有人能解释一下在这种情况下正确的选择是什么吗
多谢各位
# 1 楼答案
Python代码用空格(
' '
)填充,除非我误解了代码(不是Python的家伙)。您需要手动填充Java代码并使用"AES/CBC/NoPadding"