JavaCard 3.2模拟器启动HelloWorld时SCP Key未找到问题咨询
JavaCard 3.2模拟器SCP Key找不到问题排查
问题现象
启动HelloWorld项目时,模拟器抛出NoSuchElementException,提示无法找到_scp03mac_10密钥。
执行命令及异常输出
C:\DEV\Java\java_card_devkit\v25\java_card_devkit_simulator-win-bin-v25.0-b_474-23-APR-2025\runtime\bin\jcsw.exe -p=9025 START command completed successfully at 2025-05-29 21:51:43.034 Exception in thread "Thread-360" java.util.NoSuchElementException: SCP Key "_scp03mac_10" not found in properties. Use <AID>_[scp02|scp03][mac|enc|dek][_<key-version>] at com.oracle.javacard.amservice/com.oracle.javacard.ams.gp.scp.SCPHelper.getKey(SCPHelper.java:272) at com.oracle.javacard.amservice/com.oracle.javacard.ams.gp.scp.SCP03.createSessionKeys(SCP03.java:84) at com.oracle.javacard.amservice/com.oracle.javacard.ams.gp.scp.SCP03.authenticateCard(SCP03.java:238) at com.oracle.javacard.amservice/com.oracle.javacard.ams.gp.operations.GPOpenSecureChannel.initUpdate(GPOpenSecureChannel.java:137)
已配置的密钥文件内容
A000000151000000_scp03enc_10=1111111111111111111111111111111111111111111111111111111111111111 A000000151000000_scp03mac_10=2222222222222222222222222222222222222222222222222222222222222222 A000000151000000_scp03dek_10=3333333333333333333333333333333333333333333333333333333333333333
已执行的初始化命令
java -jar %JC_HOME_SIMULATOR%\tools\Configurator.jar \ -binary %JC_HOME_SIMULATOR%\runtime\bin\jcsw.exe \ -SCP-keyset 10 1111111111111111111111111111111111111111111111111111111111111111 2222222222222222222222222222222222222222222222222222222222222222 3333333333333333333333333333333333333333333333333333333333333333 \ -global-pin 01020304050f 03
SCP Key "_scp03mac_10"的定义位置及解决方法
- 核心存储位置:通过
Configurator.jar执行的初始化命令,已将SCP密钥写入到jcsw.exe二进制文件内部,这是模拟器读取密钥的默认来源。 - 外部配置文件:如果启动模拟器时通过
-config参数指定了外部配置文件,模拟器会优先读取该文件中的密钥项;未指定则使用二进制内的密钥。 - 异常原因与修复:
- 异常提示中的
_scp03mac_10不带AID前缀,说明模拟器在尝试读取全局默认SCP密钥组,但你配置的是带AID前缀A000000151000000的密钥组。 - 修复方案二选一:
- 在配置文件中添加不带AID前缀的全局密钥项:
_scp03mac_10=2222222222222222222222222222222222222222222222222222222222222222 _scp03enc_10=1111111111111111111111111111111111111111111111111111111111111111 _scp03dek_10=3333333333333333333333333333333333333333333333333333333333333333 - 调整客户端工具的安全通道配置,明确指定使用AID
A000000151000000对应的密钥组进行认证。
- 在配置文件中添加不带AID前缀的全局密钥项:
- 异常提示中的
内容的提问来源于stack exchange,提问作者Etantonio
相关产品推荐
相关产品推荐

