2011-07-13 77 views
4

我试图构建一个围绕RFID构建的简单认证系统。基本上我有一台旧电脑,我想购买一台USB RFID扫描仪。但是,我没有这方面的经验,所以我不确定我想要购买什么。用RFID扫描仪+ Java编程?

基本上我正在寻找一些希望带有某种允许我使用RFID卡登录用户的API的东西。任何人都可以推荐我一个很好的设备/资源来完成这个吗?

回答

2

尚未测试过,但您可能需要检查:Java-RFID Programming library

它应该是一个:

RFID套件不可知的API [...]与德州仪器和Microchip的RFID套件进行测试。

如果没有别的,代码可在SourceForge,所以你可以检查出来。

一个更好的方法可能是拿出一个特定的扫描仪,然后检查周围可用的支持(他们可能会提供自己的库,手册等)。谷歌搜索找到这篇文章,例如:RFID Reader for Samsung VLAC-G1/VLAC-Alpha readers(用C++编写,但移植它不应该是一个问题)。

1

我只涉足RFID领域,但从我看到的情况来看,大多数RFID系统都非常昂贵(尤其是固定RFID系统)。使用标准MSR或条码类型的系统可能会更好。 RFID肯定有它的好处,因为它可以是非接触式的。但是既然你提到使用“旧电脑”,这听起来就像你正在做这个爱好项目一样。如果是这样,我的建议是更简单地开始和封装设备接口逻辑,以便您可以支持各种类型的设备,而不是要求用户投资RFID。

如果您决定使用RFID,您可以尝试寻找支持将数据作为键盘输入(HID接口)返回或支持UnifiedPOS标准的RFID阅读器。我的理解是UnifiedPOS对RFID的支持是相当新的,所以你可能没有发现很多支持它的模型。

+0

此外,任何值得其盐的硬件都应提供适当的抽象,使您能够与其进行交互,因为它将是操作系统上的任何其他输入设备。硬件驱动程序的整个概念是从利用它的软件中抽象出复杂的硬件要求。 – Grambot

1

在我的工作场所,我们最近对RFID硬件进行了一些研究。我们发现大多数设备都有自己的API和SDK。如果他们支持您的编程语言,您应该检查供应商的网站。因为我们也用Java编程,所以并不是所有的设备制造商都支持Java。我已经使用修复安装的阅读器完成了一些工作。他们中的大多数人在以太网之上使用供应商特定的协议,因此您可以直接通过套接字(困难的方式)或与供应商提供的SDK(这更容易)进行通信。这些修复安装的设备比登录卡要大得多,但可以将它们隐藏在家具下方。

我们还没有遇到USB RFID阅读器。我的一位工作伙伴已经为专门用于登录卡的RFID阅读器做了一些工作。据我所知,它使用USB,他必须编写一个小型软件,将卡读取翻译为键盘笔画,因此它实际上就像条码阅读器一样,软件根本不知道RFID。

还有一个选项可以购买配备RFID阅读器的便携式移动计算机。这些设备运行剥离Windows Mobile/CE,所以你可以安装自己的软件。可悲的是,你不能直接在这些设备上使用Java。移动Windows版本有第三方JVM实现,但它们不是免费的。大多数情况下,最好的选择是.NET和Visual C++。

不幸的是我可以说RFID设备是昂贵的。也许你不知道,但市场上有两种竞争的RFID无线电标准:HF和UHF。这些RFID技术具有不同的优点/缺点。我想你也应该检查一下。

最近还有一些内置于某些Android手机的NFC技术。我猜这种技术有更便宜的设备,考虑到它们现在也内置在手机中。虽然他们不是RFID兼容据我所知。

1

RFID身份验证是一个复杂的领域,我希望您的“简单”RFID系统不会用于保护真实或重要的资产/位置。如果您想要了解真实情况,请试用MX5C-RFID。这似乎是一个不到100美元的好选择,你可以从ebay(Mifare Plus或Mifare DesFire)购买一对身份证。

如果您想要认真对待某些事情,请勿使用UHF RFID卡,因为它们很容易从远距离读取,并且不像MiFare那样提供数据加密。

如果您使用Mifare plus卡,请勿使用Mifare经典复古兼容性。 Mifare classic更容易实现,但是非常薄弱,易于克隆。

为了保证最大的安全性,当你创建一个新的卡片:

  1. 更改为自己的密钥
  2. 保持UID(这是由制造商写入只读存储器库中的所有制造商的默认密钥)卡到您的数据库中,以白名单列出您交付的卡。
  3. 读取递减计数器值并存储它,以便您可以比较下一次验证时计数器的期望值。

进行身份验证时,请执行下列操作:

  1. 读取卡的UID和检查它,你的数据库,以查看该卡已经被你提供。如果不是,则拒绝验证
  2. 调用递减函数并检查递减计数器值是否与数据库中的预期值相符。如果不是,则拒绝认证。否则,请保存减量计数器值以备将来验证。
  3. 身份验证使用该卡的ID

您可以绕过任何这些建议,使您实现尽可能简单。但请记住,如果要进行认真的身份验证,您应该执行增量开发步骤来实现上述所有功能。由于开发人员的懒惰,大多数现代RFID识别系统都是一周,因此将简单的原型应用到生产中。