TapLinx-Mifare Plus EV1 SL1混合模式身份验证

问题描述

我正在使用NXP Taplinx库在Android中工作。我正在使用的卡类型是在安全级别1(混合模式)下运行的mifare Plus EV1 RFID卡。

我有一个特定的扇区(扇区6),它在安全性级别3中运行,并且需要使用AES密钥进行身份验证,但是我无法使用SDK中提供的 authenticateFirst 方法成功进行身份验证。

返回异常:

com.nxp.nfclib.exceptions.SecurityException:数据未按块大小对齐

其他信息: 6 READ Failed(数据未按块大小对齐) 6个PCD CAPS(000000000000)

private void readSL3Sector(IPlusEV1SL1 plusEV1SL1) {

KeyData keyData = new KeyData();
keyData.setKey(new SecretKeySpec(SampleAppKeys.KEY_AES128,"AES"));
try {
IPlus.CardDetails cardDetails = plusEV1SL1.getSL3SectorHelper().getCardDetails();
System.out.println("UID: " + Utilities.bytetoHexString(cardDetails.uid));
System.out.println("SL: " + cardDetails.securityLevel);
System.out.println("vendOR: " + cardDetails.vendorID);
System.out.println("SAK: " + cardDetails.sak);

byte[] bytes = plusEV1SL1.activateLayer4();
System.out.println("RATS: " + Utilities.bytetoHexString(bytes));

int sector = 6;
byte[] byPcdCaps = new byte[6];
try {
System.out.println(sector + " STARTING AUTHENTICATION");

//Get the memory address from sector
int memoryaddress = plusEV1SL1.getSL3SectorHelper().sectorNumberToBlockNumberForAESKeys((byte) sector);
System.out.println(sector + " SECTOR MEMORY ADDRESS: " + memoryaddress);

plusEV1SL1.getSL3SectorHelper().authenticateFirst(memoryaddress,keyData,byPcdCaps);
System.out.println(sector + " Authentication result: " + Utilities.bytetoHexString(byPcdCaps));

byte[] read = plusEV1SL1.getSL3SectorHelper().read(IPlusSL3.ReadMode.Plain_ResponseMACed_CommandMACed,0);
System.out.println(sector + " Block Data BYTES: " + Utilities.dumpBytes(read));
System.out.println(sector + " Block Data HEX: " + Utilities.bytetoHexString(read));
}catch(Exception ex){
System.out.println(sector + " READ Failed (" + ex.getMessage() + ")");
System.out.println(sector + " PCD CAPS (" + Utilities.bytetoHexString(byPcdCaps) + ")");
ex.printstacktrace();
showMessage(ex.getMessage(),PRINT);
}
} catch (Exception ex) {
System.out.println("CONNECT Failed (" + ex.getMessage() + ")");
ex.printstacktrace();
showMessage(ex.getMessage(),PRINT);
}
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)