我正在用Python开发一个服务器应用程序,并用Java开发一个连接到它的应用程序。我需要用Java加密字符串,然后用Python解密。在
Java代码一切正常,但Python代码有一个问题。在from Crypto.Cipher import AES
obj = AES.new('0123456789abcdef', AES.MODE_CBC,IV="fedcba9876543210")
BLOCK_SIZE = 16
PADDING = " "
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
plain = "password"
plain = pad (plain)
ciph = obj.encrypt(plain)
obj = AES.new('0123456789abcdef', AES.MODE_CBC,IV="fedcba9876543210")
decrypted = obj.decrypt(ciph)
result = ""
for char in ciph:
result += str((hex(ord(char))))[2:]
print result
print decrypted
其结果是:
^{pr2}$
这正是我所期望的,并且与Java输出相匹配,但是当我插入两行代码中的第一行以在Python代码中解密时,输出完全关闭并显示随机字符。我认为这是由于结尾的for循环使其与Java输出相同。有没有办法撤销for循环?同样使用至少与此类似的代码,是否有一种合适的方法来解密两个输出字符串中的第一个(在Python中)?在
感谢大家的回复,提前谢谢!在