作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以在 Android 上从 PB 的 Tactivo 智能卡读卡器读取智能卡,但不熟悉验证过程。这是我必须读取输入的示例:
...
channel = card.getBasicChannel();
// See www.globalplatform.org for more information about this command.
// CLA = 0x80
// INS = 0xCa
// P1 = 0x9F
// P2 = 0x7F
// Le = 0x00
CommandAPDU GET_DATA_CardProductionLifeCycle = new CommandAPDU(0x80, 0xCA, 0x9F, 0x7F, 0x00);
ResponseAPDU cardResponse;
// Send the command to the card
cardResponse = channel.transmit(GET_DATA_CardProductionLifeCycle);
// Check SW1 if we provided wrong Le
if (cardResponse.getSW1() == 0x6C) {
// Modify the command with correct Le reported by the card in SW2.
GET_DATA_CardProductionLifeCycle = new CommandAPDU(0x80, 0xCA, 0x9F, 0x7F, cardResponse.getSW2());
// Re-send the command but now with correct Le
cardResponse = channel.transmit(GET_DATA_CardProductionLifeCycle);
}
// Check if the card has data for us to collect
if (cardResponse.getSW1() == 0x61) {
// Issue a GET RESPONSE command using SW2 as Le
CommandAPDU GET_RESPONSE = new CommandAPDU(0x00, 0xC0, 0x00, 0x00, cardResponse.getSW2());
cardResponse = channel.transmit(GET_RESPONSE);
}
// Check the final result of the GET DATA CPLC command
if (cardResponse.getSW() != 0x9000) {
// The card does not support Global Platform
System.out.println(String.format("8Card responded with SW:%04x", cardResponse.getSW()));// some sort of SW from the card here... Read as "SW: 6a82
System.out.println("9This card does not support the Global Platform " + "GET CPLC command");
return;
}
// we do not validate the data in this example - we assume that it is
// correct...
...
如果有人有智能卡/CAC 卡验证/身份验证方面的经验,请给我一些指导、示例或可以借鉴的内容。因为这方面的文档很少。
更新:我有一个 Android 应用程序,我想用智能卡来保护它的安全。我能够使用 Precise Biometrics Tactivo 智能卡读卡器读取任何智能卡的输入。如何验证/验证此输入以仅允许某些用户访问该应用程序?
最佳答案
ATR 不适合任何类型的验证,因为它通常由数千张卡共享。
虽然卡片具有唯一标识符(特定于制造商),但在发现有效标识符后很容易伪造。
要求特定卡的典型方法(作为双因素授权的组成部分,将您拥有的东西添加到您知道的东西,例如 PIN、密码)是执行外部身份验证。由于为此您需要在卡上存储您自己的 key ,因此对于您恰好拥有的卡来说,它不是一个选项。
关于java - 如何使用 Precise Biometrics Tactivo 的输入验证智能/CAC 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30786501/
我可以在 Android 上从 PB 的 Tactivo 智能卡读卡器读取智能卡,但不熟悉验证过程。这是我必须读取输入的示例: ... channel = card.getBasicChannel()
我是一名优秀的程序员,十分优秀!