gpt4 book ai didi

java - 使用智能卡在我的 Java 表单中输入 UserID

转载 作者:行者123 更新时间:2023-12-01 13:40:16 25 4
gpt4 key购买 nike

我对 Java 和智能卡编程非常陌生。我有这个看起来很简单的需求,但到目前为止我无法找到确切的资源。

我有一个 JPanel 表单,要求提供用户 ID。输入用户 ID 后,就会完成一整套编程,一切正常。

我的要求是,我希望使用 Javacard 输入用户 ID。因此,Java 卡应包含用户 ID,当将其刷入读卡器时,该 ID 会填充我的 JPanel 的 UserID 文本框。

非常感谢您在这方面的任何帮助。

谢谢

最佳答案

取决于智能卡实现的协议(protocol)。智能卡可以用任意响应来响应任意请求(称为 APDU)。通常,您与智能卡的对话如下所示:

  • 应用程序:“列出您知道其私钥的 X.509 证书(用户名和公钥)。”
  • 卡:“CN=Bob 的 X.509 证书,由公司的 Active Directory 使用 CN=... 签名”
  • 应用程序:“使用此 PIN 码验证用户身份:1234”
  • 卡:“PIN 码有效。”该卡现在已准备好使用其私钥。
  • 应用程序:“告诉我 RSA (PKCS#1)使用您的私钥对该 32 字节随机数进行签名...32 字节...”
  • 卡片:“...128 字节签名...”
  • 应用程序使用公钥验证签名是否有效,证明卡中确实存储了私钥。请注意,永远不允许应用程序实际读取私钥;它永远不会从卡上转移。

这就是您希望使用智能卡进行的基本来回操作。您需要使用什么具体的 API 取决于卡片制造商为您提供的协议(protocol)/库。听起来你并不真正关心卡的身份验证;您只想从中读取用户名。然后你就可以在第一步之后停下来。但如果您想确保该卡是真实的而不是重复的,您必须完成所有步骤。

通常,为 PKI 编写智能卡的公司也会提供一个实现 PKCS#11 C interface 的 native 库。 。如果是这种情况,那么您可以配置 SunPKCS11 JCE Provider使用正确的 pkcs11 .dll 或 .dylib。然后就可以访问卡上的KeyStore和PrivateKey了。

如果卡遵循 PKCS#15 等标准协议(protocol),那么您可以使用 OpenSC pkcs11 动态库以及 SunPKCS11 JCE 提供程序。您还可以使用 OpenSC 的命令行实用程序来测试该卡。

另一种方法是使用 APDU 直接与智能卡对话。您可以使用 javax.smartcardio API 来执行此操作(尽管我应该警告您 Sun 的实现在 OS X 上有错误;请使用 jnasmartcardio instead )。为此,您需要了解该卡应实现的特定协议(protocol)。这通常是PKCS#15 ;请参阅MyEID APDUs查看基本 APDU 的简短列表。

关于java - 使用智能卡在我的 Java 表单中输入 UserID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com