首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得唯一的智能卡ID?

如何获得唯一的智能卡ID?
EN

Stack Overflow用户
提问于 2016-09-21 06:56:58
回答 2查看 3.7K关注 0票数 3

我正在寻找一种方法来为我工作的每一张智能卡找到一个唯一的号码。我听说每一张卡都有独特的IC制作日期、IC序列号和IC批处理标识符。

我怎样才能从我的卡片上得到这些信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-22 09:51:42

当然,每一家硬件供应商都会将上述信息集成到芯片中。不幸的是,这留下了以下问题:

  • 这些信息可以由操作系统提供,也可以不提供。
  • 在一个字节制造商ID下面的几个硬件供应商之间没有什么共同之处,这个ID是在全球范围内维护的(例如芯片制造商字节);因此,晶片上的x和y坐标可能根据制造商的不同而处于不同的偏移量上,而且这个块的长度甚至可能因芯片的不同而有所不同。无论如何,都需要硬件参考手册。

摘要:如果您需要一个唯一的信息,规范必须在一开始就说明了这一点,很可能是通过指定的指令来检索它。在一个多供应商的环境中,其他一切都可能失败。剩下的唯一选择是在您自己的管理下添加一种ID作为用户数据。

由亚伯拉罕附加:

由于问题被标记为javacard,我们得出结论,您的卡是http://www.globalplatform.org/specificationscard.asp兼容卡。

1:对于GP卡,SD (安全域:默认安装在卡上的强制小程序)负责返回卡特定数据,包括IC制作日期、IC序列号和IC批处理标识符等。只要您不使用卡与非卡实体之间的安全通道,您就不能信任SD响应。但是为什么呢?因为任何恶意用户都可以使用与您的卡SD的AID相等的AID编写一个简单的applet,它将他/她的任意数据返回给您的命令,并将其安装在智能卡上,并使其默认选择。在这种情况下,当他/她将卡片放在你的读取器上时,他/她的applet回答了你的非卡片应用程序命令,而你无法检测到假卡。

2:如上文所述,不同的卡可能支持或不支持相同的命令来返回这些卡的特定数据。

因此,我建议您在applet中添加一对setSerialNumber()getSerialNumber()方法,并在您的离卡和applet之间实现一个安全通道,以确保您的卡片的唯一性。

票数 3
EN

Stack Overflow用户

发布于 2016-09-21 08:02:45

对于大多数使用程序,PC/ should应该足够了。这是一个4到7字节的标识符,在与卡构建非接触式通信时无论如何都是读取的。虽然有些卡可能被配置为返回随机UID,但是如果您控制了项目的卡片,这并不是一个问题。

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

https://stackoverflow.com/questions/39609445

复制
相关文章

相似问题

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