Javacard J2A040使用GPShell脚本更改默认密钥不起作用

问题描述

我想更改认密钥,但GPShell上的以下脚本返回6A80。

mode_211 
enable_trace 
establish_context 
card_connect 
select -AID A000000003000000 
open_sc -scp 2 -scpimpl 0x15 -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494A4B4C4D4E4F -enc_key 404142434445464748494A4B4C4D4E4F // Open secure channel
put_sc_key  -keyver 0 -newkeyver 1 -mac_key 404142434445464748494A4B4C4D4E4E -enc_key 404142434445464748494A4B4C4D4E4E -kek_key 404142434445464748494A4B4C4D4E4E  -current_kek 404142434445464748494A4B4C4D4E4F 
card_disconnect 
release_context

pyResMan

怎么了?

我的J2A040已预先个性化,但没有融合并且没有保护。

感谢您的帮助

解决方法

put_sc_key  -keyver 0 -newkeyver 1 -mac_key 404142434445464748494A4B4C4D4E4E -enc_key 404142434445464748494A4B4C4D4E4E -kek_key 404142434445464748494A4B4C4D4E4E  -current_kek 404142434445464748494A4B4C4D4E4F

正在创建一个新密钥。因为密钥集版本1中的密钥已经存在,所以命令失败。要替换密钥,请使用以下语法:

put_sc_key  -keyver 1 -newkeyver 1 -mac_key 404142434445464748494A4B4C4D4E4E -enc_key 404142434445464748494A4B4C4D4E4E -kek_key 404142434445464748494A4B4C4D4E4E  -current_kek 404142434445464748494A4B4C4D4E4F

如果失败,那么对我来说,知道添加一个新的密钥集版本是否有用将会很有趣。请尝试(添加密钥集版本2):

put_sc_key  -keyver 0 -newkeyver 2 -mac_key 404142434445464748494A4B4C4D4E4E -enc_key 404142434445464748494A4B4C4D4E4E -kek_key 404142434445464748494A4B4C4D4E4E  -current_kek 404142434445464748494A4B4C4D4E4F

我认为代码中还存在一些问题,目前我正在对此进行调查,您的支持可能会对您有所帮助。您是否正在使用Windows / Homebrew的最新二进制版本?

,

此脚本现在对我有用

var serializeOptions = new JsonSerializerOptions
{
    PropertyNamingPolicy = new JsonFirstCharToLowerNamingPolicy(),WriteIndented = true
};
var jsonString = JsonSerializer.Serialize(weatherForecast,serializeOptions);

与此:

mode_211 
enable_trace 
establish_context 
card_connect 
select -AID A000000003000000 
open_sc -scp 2 -scpimpl 0x15 -security 1 -keyind 0 -keyver 0 -key 404142434445464748494A4B4C4D4E4F -mac_key 404142434445464748494A4B4C4D4E4F -enc_key 404142434445464748494A4B4C4D4E4F -kek_key 404142434445464748494A4B4C4D4E4F // Open secure channel
put_sc_key  -keyver 1 -newkeyver 0 -mac_key 404142434445464748494A4B4C4D4E4E -enc_key 404142434445464748494A4B4C4D4E4E -kek_key 404142434445464748494A4B4C4D4E4E  -current_kek 404142434445464748494A4B4C4D4E4F 
card_disconnect 
release_context

它也起作用。 但是我真正想要的是替换3个默认密钥(S-ENC,S-MAC,DEK)而不添加新密钥,现在我有了版本2的3个新密钥,请看“图片”。

Picture from new version 2 key pyResMan

现在如何删除版本2的密钥

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...