我有一个 javacard,当我重置卡时,卡上的所有小程序都被清除,除了其中一个。它是“卡管理器小程序”,其 AID 为“A0000000030000”。我想知道有没有办法删除这个小程序?!或者它是卡上的强制性的并且没有办法删除它?如果可以删除它,删除它后,我们如何处理卡?(安装另一个小程序等)谢谢。
我使用JCManager工具在我的 java 卡上加载小程序。该软件在顶部有三个身份验证密钥字段,名为S_ENC、S_MAC和DEK。
据我所知,ENC代表Encryption,MAC代表Message Authentication Code,DEK代表Data Encryption Key。
我想知道他们何时使用(通信的哪一步?初始更新、外部身份验证?...)?
每次通信中都使用这三个密钥,还是其中一些密钥可以选择使用?
哪里?(卡或终端或两者兼而有之?)
另外,我想知道什么是KEK?KEK智能卡里有吗?
我是 Java Card 开发的新手,我正在尝试开发一个可以选择和读取 EF 数据的小程序。我想用一些假数据创建 EF 和 DF,并将其存储在卡中。然后我会用我的小程序来读取这些数据。是否可以?如果是这样,我该怎么做?请帮助,我已经搜索了很多,但我没有找到任何解决方案。
非常感谢。
下面,您会看到一个简单的小程序,它返回0x6781到带有 INS=0x70或 INS= 的传入 APDU 命令0x71:
package testPack;
import javacard.framework.*;
public class TestApp extends Applet
{
public static void install(byte[] bArray, short bOffset, byte bLength)
{
new TestApp().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
}
public void process(APDU apdu)
{
if (selectingApplet())
{
return;
}
byte[] buf = apdu.getBuffer();
switch (buf[ISO7816.OFFSET_INS])
{
case (byte)0x70:
ISOException.throwIt((short)0x6781);
break;
case (byte)0x71:
ISOException.throwIt((short)0x6781);
break;
default:
ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我收到0x6C01了带有 INS= 的 APDU 命令0x70:
Send: …Run Code Online (Sandbox Code Playgroud) 我需要你的帮助:有人知道如何在 Java Card 中呈现浮动吗?
我需要的浮点数是0.9. 我听说我需要使用浮点或类似的东西,但我不太确定。
我复制eclipse-jcde-0.2到eclipse'plugin文件夹,但eclipse中的插件不起作用,我还缺少必要的东西,如FEATURES文件夹,我怎样才能获得这些功能?
OS:windows
Eclipse version :3.2.
Run Code Online (Sandbox Code Playgroud) 我将使用Java Card Framework编写一个智能卡应用程序.当我完成我的应用程序时,我想设置一个真正的智能卡并尝试它.我必须拥有哪些设备?如何在真正的智能卡上运行我的代码我必须在我的电脑和智能卡之间提供一个连接器,不是吗?
我有一个方法将单个字节插入字节缓冲区,在构建和清理Java Card CAP文件期间,它会抛出错误.
码:
private void appendOutputBuffer(byte msg) {
ArrayLogic.arrayCopyRepack(msg, (short) 0, (short) 0, outputBuffer, (short) outputBuffer.length);
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: line 163: sctest: class java.lang.Byte not found in export file lang.exp.
error: line 163: sctest: method valueOf(byte) of class java.lang.Byte not found in export file lang.exp or the method signature has changed.
error: line 163: sctest: class java.lang.Byte not found in export file lang.exp.
error: line 163: sctest: class java.lang.Byte in return type of method java.lang.Byte.valueOf(byte) not found.
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我正在尝试使用支持MD5的Java Card对8字节消息(可能需要将其放大到128)进行哈希处理。这是我的源代码:
package net.sourceforge.globalplatform.jc.helloworld;
import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.Cipher;
import javax.print.attribute.standard.MediaSize;
import java.util.logging.Level;
public class HelloWorldApplet extends Applet {
final static byte APPLET_CLA = (byte)0x80;
final static byte HASH = (byte)0x05;
public static byte[] Message;
MessageDigest mDig = MessageDigest.getInstance(MessageDigest.ALG_MD5, true);
public static void install(byte[] bArray, short bOffset, byte bLength)
{
Message = new byte[256];
new HelloWorldApplet().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
}
public void process(APDU apdu)
{
if (selectingApplet())
{
return;
}
byte[] buffer = apdu.getBuffer();
if (buffer[ISO7816.OFFSET_CLA] == …Run Code Online (Sandbox Code Playgroud) 我正在努力学习Java Card.我刚开始并没有找到很多资源.我的第一个问题是如何理解APDU命令.(例如ISO/IEC 7816-4中定义的那些)
例如,如果我看到一个字节模式,例如10101010我如何理解它的含义,特别是确定CLA或INS,例如?