NTAG213:尝试使用错误的密码进行身份验证时,Android引发IOException

用户名

我正在编写一个Android应用程序,该应用程序应该使用NXP的写保护NTAG213 NFC标签进行身份验证。使用正确的密码,一切正常,我得到PACK作为回报。

尝试使用错误的密码进行身份验证时,我的代码无法正常工作。根据标签的说明,在这种情况下,我应该收到NAK,但是我收到了TagLostException还是我弄错了,一切都按预期运行?然后,如何区分错误的密码和实际的密码TagLostException

如果有人能够告诉我我在做什么错,我将不胜感激。

try {
    nfcA.connect();

    byte[] response = nfcA.transceive(new byte[]{
    NTAG213_PWD_AUTH, mTagPassword[0], mTagPassword[1],
                      mTagPassword[2], mTagPassword[3]
    });

    // checking if response was a NAK
    if (((byte) 0x00 == response[0]) ||
        ((byte) 0x01 == response[0]) ||
        ((byte) 0x04 == response[0]) ||
        ((byte) 0x05 == response[0])) {

        nfcA.close();
        result.setErrorCode(WRONG_PASSWORD);
        return result;
    }
}catch (TagLostException e){
    result.setErrorCode(TAG_LOST_EXCEPTION);
    e.printStackTrace();
    return result;
}catch (IOException e){
    result.setErrorCode(IO_EXCEPTION);
    e.printStackTrace();
    return result;
}
罗兰(Michael Roland)

没错,如果身份验证命令失败,标签将以NACK响应进行应答。这与标签不支持命令的情况相同。

不幸的是,各种Android NFC堆栈实现以不同的方式处理NACK响应。它们或者在响应字节数组中返回NACK值,返回空响应(?),或者生成一个IOException(通常为a TagLostException)。因此,您无法可靠地区分出身份验证失败,不支持命令或与标签的通信实际中断的情况。

为了检测标签是否仍然存在(因此,只是由于某种原因而失败的命令),之后可以发出READ命令(或其他希望针对特定标签类型成功执行的命令) 。如果同样失败,则可以确定与标签的通信已丢失。

请注意,在失败的命令之后和继续发送其他命令之前,您需要断开(NfcA.close())并重新连接(NfcA.connect())标签。不管您是IOException从该transceive()方法收到的还是实际的NACK响应值,都应执行此操作为了在任何命令失败后重置标签的状态,通常这是必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何设置和读取带密码的NTAG213?

来自分类Dev

尝试使用Auth0对用户进行身份验证时出现CORS错误

来自分类Dev

尝试使用 reddit api 和 python 3 进行身份验证时出现 401 错误

来自分类Dev

尝试使用Firebase身份验证时出现错误

来自分类Dev

使用部分密码进行身份验证

来自分类Dev

尝试对客户端服务器ssl进行身份验证时,Tomcat 7获取SSLv2Hello被禁用错误

来自分类Dev

使用AngularFireModule进行身份验证时键入错误

来自分类Dev

尝试更改我的用户密码时出现“身份验证令牌操作”错误

来自分类Dev

尝试进行身份验证以进行数据抓取时出现Cookie错误

来自分类Dev

仅在尝试检索task.getResult()时引发Firebase电子邮件/密码身份验证异常

来自分类Dev

尝试使用 Cognito 与 Battle.net OIDC 进行身份验证时出现错误的 id_token 颁发者

来自分类Dev

尝试使用jdbc从Clojure连接到Postgresql时,密码身份验证失败

来自分类Dev

在Android WebView中进行身份验证重定向后获取“错误的用户名或密码”

来自分类Dev

严重:bucardo添加表时进行密码身份验证

来自分类Dev

首先使用Facebook进行身份验证,然后使用Google进行身份验证,导致Android版Firebase出现错误

来自分类Dev

尝试在Laravel 5.2中进行手动身份验证时出现奇怪的错误

来自分类Dev

尝试通过jwt进行身份验证时出现Docusign错误“需要同意”

来自分类Dev

尝试在我的网站中进行身份验证时如何避免此Facebook错误?

来自分类Dev

尝试在Laravel 5.2中进行手动身份验证时出现奇怪的错误

来自分类Dev

在React中尝试对Harvest API进行身份验证时出现错误请求(400)

来自分类Dev

Gmail API 错误:尝试进行身份验证时 redirect_uri_mismatch。(PHP)

来自分类Dev

Unity Facebook SDK使用正确的appid但使用错误的显示应用程序进行身份验证

来自分类Dev

客户端使用OpenPop进行身份验证时,密码是否需要编码?

来自分类Dev

使用Oracle厚OCI驱动程序的Grails用错误的用户向Oracle进行身份验证

来自分类Dev

使用Oracle厚OCI驱动程序的Grails用错误的用户向Oracle进行身份验证

来自分类Dev

使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

来自分类Dev

在php中使用django密码进行身份验证

来自分类Dev

使用bcrypt哈希密码进行身份验证

来自分类Dev

使用MERN Stack进行密码重置身份验证

Related 相关文章

  1. 1

    如何设置和读取带密码的NTAG213?

  2. 2

    尝试使用Auth0对用户进行身份验证时出现CORS错误

  3. 3

    尝试使用 reddit api 和 python 3 进行身份验证时出现 401 错误

  4. 4

    尝试使用Firebase身份验证时出现错误

  5. 5

    使用部分密码进行身份验证

  6. 6

    尝试对客户端服务器ssl进行身份验证时,Tomcat 7获取SSLv2Hello被禁用错误

  7. 7

    使用AngularFireModule进行身份验证时键入错误

  8. 8

    尝试更改我的用户密码时出现“身份验证令牌操作”错误

  9. 9

    尝试进行身份验证以进行数据抓取时出现Cookie错误

  10. 10

    仅在尝试检索task.getResult()时引发Firebase电子邮件/密码身份验证异常

  11. 11

    尝试使用 Cognito 与 Battle.net OIDC 进行身份验证时出现错误的 id_token 颁发者

  12. 12

    尝试使用jdbc从Clojure连接到Postgresql时,密码身份验证失败

  13. 13

    在Android WebView中进行身份验证重定向后获取“错误的用户名或密码”

  14. 14

    严重:bucardo添加表时进行密码身份验证

  15. 15

    首先使用Facebook进行身份验证,然后使用Google进行身份验证,导致Android版Firebase出现错误

  16. 16

    尝试在Laravel 5.2中进行手动身份验证时出现奇怪的错误

  17. 17

    尝试通过jwt进行身份验证时出现Docusign错误“需要同意”

  18. 18

    尝试在我的网站中进行身份验证时如何避免此Facebook错误?

  19. 19

    尝试在Laravel 5.2中进行手动身份验证时出现奇怪的错误

  20. 20

    在React中尝试对Harvest API进行身份验证时出现错误请求(400)

  21. 21

    Gmail API 错误:尝试进行身份验证时 redirect_uri_mismatch。(PHP)

  22. 22

    Unity Facebook SDK使用正确的appid但使用错误的显示应用程序进行身份验证

  23. 23

    客户端使用OpenPop进行身份验证时,密码是否需要编码?

  24. 24

    使用Oracle厚OCI驱动程序的Grails用错误的用户向Oracle进行身份验证

  25. 25

    使用Oracle厚OCI驱动程序的Grails用错误的用户向Oracle进行身份验证

  26. 26

    使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

  27. 27

    在php中使用django密码进行身份验证

  28. 28

    使用bcrypt哈希密码进行身份验证

  29. 29

    使用MERN Stack进行密码重置身份验证

热门标签

归档