如何在Android

时间:2017-05-02 12:05:55

标签: smartcard

美好的一天,我的任务是在android中开发一个应用程序,它基本上是通过从智能卡的芯片中读取数据来实现的。这很简单"我最初想。我的工作场所购买了一些带有集成读卡器的Android设备,获得了SDK并将其交给了我。在阅读SDK并进一步研究后,我发现所有SDK都是获得卡ATR ...我理解其中包含包含个人卡信息的历史数据。

这里的问题是会员号码被编码到卡片上......(他们购买的原因)但是如果返回的ATR看起来像这样(实际的字母已被重新调整):

3D 6Z 00 00 80 34 80 62 B0 89 35 01 F1 83 00 90 00

如何解析此信息以获取所需信息。员工编号将被编码到芯片中,我打算读取卡片并提取数据。 我以为我会看到一个"名称/价值"配对我现在可以随意提取和使用的值。所以原谅我的经验不足。我如何解析智能卡ATR?谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过解析ATR来提取历史字节。

可以找到Java实现here。你所要做的就是:

// your ATR as byte array
byte[] rawAtr = new byte[] {(byte)3B, (byte)0F, (byte)00, (byte)65, (byte)46, (byte)53, (byte)05, (byte)16, (byte)05, (byte)71, (byte)DF, (byte)00, (byte)00, (byte)00, (byte)80, (byte)6A, (byte)82}
ATR atr = new ATR(rawAtr);

byte[] historicalBytes = atr.getHistoricalBytes();

对于Perl实现,请参阅here

由于历史数据可以采用专有格式,因此您必须查看智能卡的数据表内部,以了解如何解析历史字节的内容。