JavaCard 获取卡上的数据

标签 java cryptography storage javacard apdu

我想在 Linux 计算机上生成证书,将其传输到卡并在那里加密。然后将其存储并稍后取回。我想知道如何在卡上获取 4k RSA 数据之类的东西。它可以与 APDU 配合使用吗?

最佳答案

证书一般不需要加密;它通常包含公共(public)信息。您可以使用多个 APDU 命令向卡发送数据。为此,您可以使用命令链:一个重复多次以发送数据的命令。您还可以使用带有偏移量的 UPDATE BINARY。

Java Card 上的命令链或 UPDATE BINARY 均未实现开箱即用,因此您必须自己实现该功能。规范在 ISO/IEC 7816-4: "Identification cards -- Integrated circuit cards -- Part 4: Organization, security and commands for interchange" .

Java Card 本身支持大小最大为 2^15 - 1 字节的字节数组。这大约是 32K,比通用的 X509v3 证书大得多。您可以在其中存储明文或密文。

所以,是的,这种功能“通过 APDU”是可能的。由于 APDU 是大多数卡的唯一通用接口(interface),因此应该有许多实现可以做到这一点。至少是我设计/实现的那些。

<小时/>

Java 卡可能还支持扩展长度 APDU(通过 Applet 实现ExtendedLength 接口(interface))。然而,对于大多数(如果不是全部)卡来说,最大 APDU 缓冲区远低于 4K。因此,尽管您当然可以为此使用扩展长度 APDU,但您无法用它解决完整的问题。

关于JavaCard 获取卡上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550728/

相关文章:

java - 如何使用 MSI 从 Java 向 Azure 存储进行身份验证?

android - 在基于 Android 的设备中使用 SQLite

java - Android WifiManager getScanResult 提示需要 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限,尽管已声明权限

java - EncryptionException : javax. crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是 8 的倍数

java - 使用 RSASSA-PKCS1-V1_5 使用私钥对有效负载进行数字签名

c++ - 在 openssl 中为 pkcs7 选择摘要和加密算法

sql-server - Azure BLOB 存储或 SQL SERVER 保存和获取文件的更好更快的方法是什么?

java - Java 中的模式匹配

java - 在主要 Activity 中膨胀 fragment 会带来错误

java - 列表模型中元素的类型