当以 ASCII 格式转储时,CAP 文件包含主小程序 class 和所有其他 class 文件详细信息

CAP file contains the main applet class & all other class file details when dumped in ASCII format

我正在使用 javacard 3.0.4 开发工具包构建 cap 文件。 class 文件是使用 'javac -g -classpath %JC_HOME%\lib\api.jar;%[=31 生成的=]%\lib\installer.jar PATH_TO_THE_JAVA_FILES_OF_THE_PROJECT' 命令.

我正在使用转换器通过提供配置文件将 class 文件转换为 CAP 文件。 配置文件内容:

-out EXP JCA CAP
-classdir PATH_TO_CLASS_FILES
-exportpath PATH_TO_EXPORT_API_FILES
-applet 0xa0:0x00:0x00:0x00:0x62:0x12:0x34 MyWallet.Wallet
MyWallet 0xa0:0x00:0x00:0x00:0x62:0x12:0x34 1.0

上限生成成功。但是当我看到 cap 的 ascii 格式(使用 capdump.bat)时,我看到它包含所有小程序 class 文件信息,这是一个安全问题。

当我使用 eclipse(安装了 JCOP 插件)生成 cap 文件时,CAP 文件不包含任何 class 文件信息。

所以请有人帮我去掉在命令行上使用 CONVERTER.bat 生成的 CAP 文件中的 class 文件信息。

反编译总是可以发生的,最终Java毕竟是针对JVM,使用Java字节码的一个子集。所以我不会太相信隐藏 class / 方法名称等措施。

但是,如果您不想生成此类信息,则只需删除 EXP 选项,这是 link 针对您的小程序和 JCA 选项所必需的,根据 Oracle 文档,这是

... a text representation of the contents of a CAP file. To mask a Java Card applet into a smart card, you need to convert the applet class and all the classes in its package to a JCA file. You then specify the JCA file and the JCA files for any other packages to be included in the mask as input to the mask generator.

所以只有在需要ROM屏蔽的时候才需要用到这个文件。如果只是想自己上传,则不需要JCA文件。

感谢 Maarteen 的解释,它确实帮助我理解了掩码的概念。 在为 cap 文件构建设置 ant 任务后,我的问题得到解决。 cap 文件中的 class 文件信息确实被 ant build 删除了。