1

AES/PKCS7 で暗号化されたいくつかのファイルを作成する Python アプリケーションがあります。これらのファイルを Java サービスで読み取る必要があります。しかし、私のコードは例外をスローしています:

「javax.crypto.IllegalBlockSizeException: 復号化で最後のブロックが不完全です」

これが私の復号化コードです:

public String Decrypt(String strText)
{
    try
    {
        // Text to decrypt
        byte[] test = strText.getBytes();

        //bytKey is the same key as Python app
        SecretKeySpec objKey = new SecretKeySpec(bytKey, "AES");
        Cipher objCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
        objCipher.init(Cipher.DECRYPT_MODE, objKey);

        // Here I got an exception >>
        byte[] bytValue = objCipher.doFinal(test);

        return new String(bytValue);
    }
    catch (Exception exc)
    {
        exc.printStackTrace();
    }

    return "";

}

ステップインする前に暗号化されたテキストをデコードすると、doFinal別の例外が発生します。

「javax.crypto.BadPaddingException: パッド ブロックが壊れています」

public String Decrypt(String strText)
{
    try
    {

        BASE64Decoder decoder = new BASE64Decoder();
        byte[] test = decoder.decodeBuffer(strText);

        SecretKeySpec objKey = new SecretKeySpec(bytKey, "AES");
        Cipher objCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
        objCipher.init(Cipher.DECRYPT_MODE, objKey);

        byte[] bytValue = objCipher.doFinal(test);

        return new String(bytValue);
    }
    catch (Exception exc)
    {
        exc.printStackTrace();
    }

    return "";

}

私は暗号化/復号化の専門家ではありませんが、解決するのは非常に簡単だと思います。この問題を解決するためのアイデアはありますか? 前もって感謝します!

4

0 に答える 0