如何在AES / ECB / PKCS5Padding中通过python解密字符串(由Java加密)?

时间:2019-03-05 16:42:31

标签: java python cryptography aes

我正在做一个django项目,该部分涉及解密json播放负载,并且内部的数据由ASE / ECB / PKCS5Padding中的java加密。因此,我尝试获取加密的字符串并将其放入python脚本中,以查看是否有可能将其解密回原始字符串。这是Java加密/解密的Code

这是我的python版本:

class AESCipher:
    def __init__(self):
        self.key = '9sdf3jkkjsdfUUJH'

    def encrypt(self, raw):
        raw = pad(raw)
        cipher = AES.new(self.key, AES.MODE_ECB)
        enc_str = cipher.encrypt(raw)
        str_64 = base64.b64encode(enc_str)
        return(str_64.decode())


    def decrypt(self, enc):
        cipher = AES.new(self.key, AES.MODE_ECB)
        #enc += (len(enc) % 4) * '='
        decrypt_bytes = base64.b64decode(enc)
        dec = cipher.decrypt(decrypt_bytes)
        try:
            result = \
            re.compile('[\\x00-\\x08\\x0c\\x0e-\\x1f\\n\r\t]').sub('',\
                                     dec.decode())
        except Exception:
            result = 'fail'
        return(result)

但是,它只能执行常规的加密/解密,而不能解密Java。我猜这是因为Java中的getSecretKey()方法,但是我在Java中并不擅长,也不知道它是什么。请问仍然可以解密用Java加密的字符串吗?谢谢

0 个答案:

没有答案