加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何使用APDU将PIN验证代码发送到智能卡 – 使用.NET

发布时间:2020-12-16 09:53:11 所属栏目:asp.Net 来源:网络整理
导读:我能够连接到卡,现在我需要验证PIN但我无法确定应该使用哪些代码来执行验证 // Verify PIN//HERE IS WHAT I′M NOT SURE WHAT TO USE - Just an Examplebyte[] pin = new byte[] { 0x31,0x32,0x33,0x34,0xFF,0xFF };APDUParam apduParam = new APDUParam();a
我能够连接到卡,现在我需要验证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 };
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,LC字节.
我应该为7位数的PIN设置3个字节或6个字节
并且应该是实际的PIN或仅为0xFF值

Ex. {CLA,0xFF} +7 Bytes

在规范中,我找到了8位数最小值和最大值以及最小值4和最大12位字节的示例…

解决方法

这比我想的要简单……

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

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

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

CLA INS P1 P2 Lc 31 33 35 37 FF FF FF FF

当PIN使用BCD右对齐和控制字段时

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

>?正确的理由.个人代码包含少于8位数字;
因此,八位数代码的最高位必须为
充满零.
>?框架在PIN之前集成了特定的控制字段“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位数的PIN,所以未使用的字节应默认为0xFF

希望有所帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读