0

我面临着一种奇怪的行为。密钥 A 和 B 有权读取块 0 & 1 & 2。(访问条件设置为:6E1789)但我只能用密钥 A 读取,因为用密钥 B,Android 应用程序检测到新的 NFC 标签并丢失了最后一个一,所以她去“onPause”然后“onNewIntent”,这一遍又一遍......

这里我读取数据的函数(它与密钥 A 相同,但 authenticateSectorWithKeyB 当然被 authenticateSectorWithKeyA 取代)。

public byte[] readOneSectorOneBlockKeyB(byte[] key, int sectorNumber, int blockNumber) throws MifareException {
        byte[] data = null;
        try {
            boolean auth = false;
            int bIndex = 0;
            auth = mfc.authenticateSectorWithKeyB(sectorNumber, key);
            if (auth) {
                bIndex = 0;
                bIndex = mfc.sectorToBlock(sectorNumber);
                data = mfc.readBlock(bIndex + blockNumber);
            } else {
                throw new MifareException("Authentification failed");
            }
        } catch (IOException e) {
            throw new MifareException(e.getLocalizedMessage());
        }
        return data;
    }

而且系统没有捕捉到 IOException ...我不知道问题出在哪里?

4

0 回答 0