Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用APDU向智能卡发送PIN验证码-使用.NET_.net_Smartcard_Asp.net 4.5_Apdu - Fatal编程技术网

如何使用APDU向智能卡发送PIN验证码-使用.NET

如何使用APDU向智能卡发送PIN验证码-使用.NET,.net,smartcard,asp.net-4.5,apdu,.net,Smartcard,Asp.net 4.5,Apdu,我能够连接到卡,现在我需要验证PIN,但我无法确定应该使用哪个代码来执行验证 // Verify PIN //HERE IS WHAT I´M NOT SURE WHAT TO USE - Just an Example byte[] pin = new byte[] { 0x31, 0x32, 0x33, 0x34, 0xFF, 0xFF, 0xFF, 0xFF }; APDUParam apduParam = new APDUParam(); apduParam.Data = pin; ap

我能够连接到卡,现在我需要验证PIN,但我无法确定应该使用哪个代码来执行验证

// Verify PIN
//HERE IS WHAT I´M NOT SURE WHAT TO USE - Just an Example
byte[] pin = new byte[] { 0x31, 0x32, 0x33, 0x34, 0xFF, 0xFF, 0xFF, 0xFF };
APDUParam apduParam = new APDUParam();
apduParam.Data = pin;
apduVerifyCHV.Update(apduParam);
apduResp = iCard.Transmit(apduVerifyCHV);
这是一种使用7位PIN的智能卡。它总是7位数

**Example:**
{CLA, INS, P1, P2, Lc, b1, b2, b3, b4, b5, b6, b7}
这里有基本的
CLA
INS
P1
P2
LC
字节。 我应该为7位的PIN设置+3字节还是6字节 且应为实际引脚或仅为0xFF值

Ex. {CLA, INS, P1, P2, Lc, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} +7 Bytes

在规范中,我找到了最小8位、最大8位、最小4位、最大12位字节的示例…

这比我想象的要简单

当PIN使用带填充的ASCII格式转换时

输入的PIN码为1357(最小尺寸=4位,最大尺寸=8位)

  • •左对齐
  • •CCID的默认显示行为
  • •CCID向ICC发送命令

    课程编号P1 P2 Lc 31 33 35 FF FF FF FF

引脚使用BCD右对齐和控制字段时

输入的PIN码为13579(最小尺寸=4位,最大尺寸=8位)

  • •正确的理由。个人代码少于8位; 因此,必须指定八位代码的最高有效位 用零填充
  • •框架在引脚前集成了一个特定的控制字段“01” 转换
  • •没有消息
  • •CCID向ICC发送命令

    CLA INS P1 P2 Lc 01 00 01 35 79

所以,我所要做的就是设置适当的值。 在我的例子中,使用带左对齐的ASCII方法:

0x00 0x20 0x00 0x01 0x08 0x30 0x31 0x34 0x37 0x34 0x31 0x30 0xFF
3-指填充物

3x-x指给定位置的实际管脚编号(左对齐) 因为我有一个7位的引脚,所以未使用的字节默认为0xFF


希望这对某些人有所帮助

主机应用程序必须执行填充是很少见的,因为通常有效字符集不受限制,0xFF将是合法字符。此外,外部不一定知道最大长度。如果只允许数字,ISO 9564定义了一些变体。嗨,有谁能提供具有Verify PIN和Verify ADM命令的标准参考?它是ETSI还是ISO或3GPP?@Ac3\U DeXt3R ISO/IEC 7816-4。在170美元的付费墙后面。