首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于c#的金雅拓.net智能卡Pin验证

基于c#的金雅拓.net智能卡Pin验证
EN

Stack Overflow用户
提问于 2013-05-30 17:22:00
回答 4查看 2.5K关注 0票数 1

我正在尝试使用c#验证和更改金雅拓.net卡的pin。但当我试着核实的时候,用的是-

代码语言:javascript
复制
byte cla_verify = 0;
byte p2_pinReference = 0x80;
CardCommandAPDU quickVerify = new CardCommandAPDU(cla_verify, 0x20, 0x00, p2_pinReference, CardHex.ToByteArray("FFFFFFFFFFFFFFFF"));
CardResponseAPDU aRespAPDU = aCard.SendCommand(quickVerify);

它正在返回-SW 27033 (RSP 6999)

任何想法。我做错了什么?

EN

回答 4

Stack Overflow用户

发布于 2013-05-31 02:29:43

状态字69XX表示:不允许命令。

我已经研究了NET Smartcard Framework SDK内部提供的NETSmartcardFramework.chm。不知道要使用什么CLA、INS、P1、dan P2和Lc。相反,PIN验证已经包装到PIN类中。

要验证PIN值,您可以使用

代码语言:javascript
复制
// PIN Class members
// PIN.Verify Method

public void Verify(byte[],int,int);
public void Verify(string);

但在此之前,您需要使用构造函数PIN(byte[],int,int,int)PIN(string,int)初始化个人识别码,并检查个人识别码是否为isBlocked()isVerified()

一些有趣的文章和指南:

  • Building Your Own Security Application with the Gemalto .NET Smart Card V2
  • Gemalto .NET v2/v2+ Smart Card User Guide
票数 1
EN

Stack Overflow用户

发布于 2013-05-31 14:44:20

请注意,虽然您的个人识别码引用声明了一个特定的引用,但来自P2的标识符0表示:“卡片应知道所寻址的个人识别码”。这可能需要额外的先前发送的命令,如设置模式中的管理安全ENvironment,或某个安全环境对象或类似对象。特别是对于下面的更改参考数据,我建议显式地声明ID。

票数 1
EN

Stack Overflow用户

发布于 2016-03-18 14:00:12

引脚验证在here中进行了说明。您可以尝试此代码,而不是您的代码。我觉得挺不错的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16832327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档