我正在编写一个Android应用程序,它应该使用NXP的写保护NTAG213 NFC标签进行身份验证。使用正确的密码一切正常,我得到了PACK作为回报。
尝试使用错误的密码进行身份验证时,我的代码无法正常运行。根据标签的描述,在这种情况下我应该收到一个NAK,但是我得到了一个< code>TagLostException。还是我弄错了,一切都如预期的那样?那么,我如何区分错误的密码和实际的< code>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;
}
您是对的,如果身份验证命令失败,标签将使用 NACK 响应进行应答。这与标签不支持命令的情况相同。
不幸的是,各种Android NFC堆栈实现以不同的方式处理NACK响应。它们要么返回响应字节数组中的NACK值,要么返回空响应(?),或者它们生成<code>IOException</code>(通常是<code>TagLostException>/code)。因此,您无法可靠地区分身份验证失败、命令不受支持或与标签的通信实际中断的情况。
为了检测标签是否仍然存在(因此,它只是由于某种原因失败的命令),您可以在之后发出 READ 命令(或您希望针对特定标签类型成功执行的其他命令)。如果此操作也失败,则可以确定与标记的通信已丢失。
请注意,在命令失败后,继续发送其他命令之前,您需要断开(< code>NfcA.close())并重新连接(< code>NfcA.connect())标签。不管您是从< code>transceive()方法收到了< code>IOException还是实际的NACK响应值,都应该这样做。这通常是必要的,以便在任何命令失败后重置标签的状态。
我正在尝试在ec2的两个实例上设置zookeeper。如这里和这里所示。我正在尝试运行zookeeper,但失败了,出现了一个错误:命令:
我正在使用生成用户密码的强哈希值。我想登录用户,但不想通过网络以明文形式发送密码,如何检查密码是否正确(没有往返),因为它是加盐的? 我有一个客户端/服务器场景。客户端是台式计算机上的应用程序(不是网站,也不是超文本传输协议服务器)。 我怎样才能做到这一点?我只是走了这么远:我正在客户端上生成salt散列,从中形成一个mcf并将其发送到我的服务器。将mcf保存到数据库。我没有发送密码,只发送了实际
我无法登录我的系统。当我在我的web表单中插入数据并点击登录按钮时,我的系统不工作。(数据是正确的)。 用户实体: 用户存储库: 安全配置: 错误消息:
编辑:我刚刚在清理项目并使缓存无效后重新启动了Android Studio。现在我发现了这个错误- 下面的错误会无限打印。 我做错了什么?
我一直在尝试使用Firebase Auth执行电话身份验证方法,我已确保遵循所有步骤,添加我的包名称,使用添加SHA Key keytool -list -v -keystore “%USERPROFILE%.android\debug.keystore” -alias androiddebugkey -storepass android -keypass android 然后添加所有的依赖项,并
我正在设置一个KeyVault来从我的. NET Azure WebApp中删除秘密,并通过CredScan,据我所知,一切都已正确连接。 KeyVault与应用程序存在于同一资源组中,并且具有所需的机密。应用程序服务在KeyVault的访问策略中设置了显式读取权限。所有正确的参数都用于在代码中创建API客户机,遵循文档。 然而,当我使用标准API调用使用客户端实际访问一个秘密时,即。 我得到以下