DESfire EV1タグと対話する場合、通信を保護するためにAES-CBCが使用されます。メッセージを暗号化して送信した後、暗号化の結果であるIVを使用して応答を復号化する必要があります。
Cipher c = Cipher.getInstance("AES/CBC/NoPadding");
c.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(zeroBytes));
byte[] encrypted_response = transceive(c.doFinal(message));
// TODO: cipher needs to be re-set to DECRYPT_MODE while retaining the IV
c.init(Cipher.DECRYPT_MODE, ...?);
byte[] response = c.doFinal(encrypted_response);
残念ながら、Cipher.getIV()は最初のIV(すべてゼロ)を返し、CBC部分全体を手動で実装する以外にIVを取得する方法はないようです。バイトを暗号化した後に暗号から更新されたIVを取得するでは、同様の質問が行われますが、CBCモードには適用されないCTR固有のソリューションのみが示されています。