Android/Java アプリでは、
byte[] data = ":ʺ$jhk¨ë‹òºÃ"; // fetched from php server..
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, mKeyspec);
return new String(cipher.doFinal(data));
上記のコードはBadPaddingException: pad block corrupted
、次の 16 バイトの暗号化されたデータに対して 常にスローします。
data = ":ʺ$jhk¨ë‹òºã" (データは 16 文字)
キーの長さは 16 バイトです。
データがすでにブロックのサイズになっているのに、なぜこの例外がスローされるのですか? パディングは必要ありません。
注: 暗号化されたデータは、php サーバーから取得されます。
編集:
に変更
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
後
Cipher cipher = Cipher.getInstance("AES");
復号化メソッドは成功しますが、この出力が得られます