我正在尝试构建一个围绕 RFID 构建的简单身份验证系统。基本上我有一台旧电脑,我想买一个 USB RFID 扫描仪。但是,我在这方面没有经验,所以我不确定我要买什么。
基本上,我正在寻找一些希望带有某种 API 的东西,它允许我使用 RFID 卡登录用户。谁能推荐我一个好的设备/资源来完成这个?
我正在尝试构建一个围绕 RFID 构建的简单身份验证系统。基本上我有一台旧电脑,我想买一个 USB RFID 扫描仪。但是,我在这方面没有经验,所以我不确定我要买什么。
基本上,我正在寻找一些希望带有某种 API 的东西,它允许我使用 RFID 卡登录用户。谁能推荐我一个好的设备/资源来完成这个?
还没有测试过,但你可能想检查一下:Java-RFID Programming library。
它应该是一个:
与 RFID 套件无关的 API [...] 使用德州仪器和 Microchip RFID 套件进行了测试。
如果没有别的,代码在SourceForge 上可用,所以你可以检查一下。
更好的方法可能是提供一个特定的扫描仪,然后检查周围有哪些支持(他们可能提供自己的库、手册等)。谷歌搜索找到这篇文章,例如:三星 VLAC-G1/VLAC-Alpha 阅读器的 RFID 阅读器(用 C++ 编写,但移植应该没有问题)。
我只涉足 RFID,但据我所知,大多数 RFID 系统都非常昂贵(尤其是固定 RFID 系统)。使用标准 MSR 或条形码类型的系统可能会更好。RFID当然有它的好处,因为它可以是非接触式的。但是,由于您提到使用“旧计算机”,因此听起来您是在将其作为业余项目进行。如果是这样,我的建议是从更简单的开始并封装设备接口逻辑,以便您可以支持各种类型的设备,而不是要求用户投资 RFID。
如果您决定使用 RFID,您可以尝试寻找支持作为键盘输入(HID 接口)返回数据或支持 UnifiedPOS 标准的 RFID 阅读器。我的理解是,UnifiedPOS 对 RFID 的支持相当新,因此您可能还没有找到很多支持它的模型。
在我的工作场所,我们最近对 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。
RFID 身份验证是一个复杂的领域,我希望您的“简单”RFID 系统不会用于保护真实或重要的资产/位置。如果您想进入真实的事物,请尝试 MX5C-RFID。这似乎是一个不错的选择,不到 100 美元,您可以从 ebay(Mifare Plus 或 Mifare DesFire)购买几张身份证。
如果您想认真保护某些东西,请不要使用 UHF RFID 卡,因为它们很容易从远距离读取,并且不像 MiFare 那样提供数据加密。
如果您选择 Mifare plus 卡,请勿使用 Mifare 经典复古兼容性。Mifare classic 更容易实现,但非常弱且易于克隆。
为确保最大安全性,当您创建新卡时:
进行身份验证时,请执行以下操作:
您可以绕过任何这些建议,以使您的实现尽可能简单。但是请记住,如果您想进行严格的身份验证,您应该执行增量开发步骤来实现我上面提到的所有功能。由于开发人员的懒惰,大多数现代 RFID 识别系统都是周而复始的,将简单的原型投入生产使用。