現在、DESFireEV1非接触型カードを使用しています。マスターキー「000000 00 00 00 00 00 00 00 00 00 00 000000」を使用してDES/CBCで暗号化されたrandom_bを解読しようとしています。
私はこのコードを使用しています:
byte[] encipheredCodeRandomB = { (byte)0xEA ,(byte)0x18 ,(byte)0xDE ,(byte)0xFF
,(byte)0x52 ,(byte)0x0E,(byte)0xCD, (byte) 90};
byte[] masterKeyBytes = "0000000000000000".getBytes();
byte[] ivBytes = "00000000".getBytes();
DESKeySpec desKeySpec = new DESKeySpec(masterKeyBytes);
SecretKeyFactory desKeyFact = SecretKeyFactory.getInstance("DES");
SecretKey s = desKeyFact.generateSecret(desKeySpec);
aliceCipher = Cipher.getInstance("DES/CBC/NoPadding");
aliceCipher.init(Cipher.DECRYPT_MODE, s, new IvParameterSpec(ivBytes));
byte[] decipheredCodeRandomB = aliceCipher.doFinal(encipheredCodeRandomB);
しかし、このコードは正しく解読されません。この無効な結果が表示されます:「4B9D 5A 91 AE93F8ED」正しい結果は「A42F3E84 2C5A2968」です。