简体   繁体   English

是否可以用Java以外的任何其他语言编程启用了“ Java Card”的智能卡?

[英]Is it possible to program a “Java Card” - enabled smart card in any other language than Java?

I have a Java Card enabled smart card and a card reader that was given by my Lab-instructor. 我有一个启用Java卡的智能卡,以及由我的实验室讲师提供的读卡器。 I am supposed to do a project using Java Card 2.1.1 API. 我应该使用Java Card 2.1.1 API进行一个项目。

I don't like the Java Card API. 我不喜欢Java Card API。

Is it possible to program my given smart card using any other language like C? 是否可以使用其他任何语言(例如C)对给定的智能卡进行编程?

The general answer : 一般答案:

Unfortunately no, currently there is no other way than using Java Card API to program a Java Card compatible card. 不幸的是,没有,目前除了使用Java Card API对Java Card兼容卡进行编程外,别无其他方法。

The detailed answer: 详细答案:

Some kind of cards have a mechanism named "Secure Box". 某些卡具有一种称为“安全盒”的机制。 As mentioned in the JCOP v2.4.2 r3 card Security target : JCOP v2.4.2 r3卡安全目标中所述

The Secure Box is a construct which allows to run non certified third party native code and ensures that this code cannot harm, influence or manipulate the JCOP 2.4.2 R3 operating system or any of the applets executed by the operating system.The separation of the native code in the Secure Box from other code and/or data residing on the hardware is ensured by the Hardware MMU which has been certified in the hardware evaluation. Secure Box是一种允许运行未经认证的第三方本机代码并确保该代码不会损害,影响或操纵JCOP 2.4.2 R3操作系统或该操作系统执行的任何applet的结构。硬件评估模块中已认证的硬件MMU可确保安全盒中其他代码和/或数据中安全盒中的本机代码。

Here and here you can see some information about Secure Box. 在这里这里,您可以看到有关Secure Box的一些信息。 As far as I know, you can write applications in C or Assembly language and upload them on the Secure Box. 据我所知,您可以使用C汇编语言编写应用程序,然后将其上传到安全盒中。 But it is really really tricky and I think finally you will change your opinion about the Java Card API and you will make a decision to try to not only like it, but also love it! 但这确实很棘手,我想您最终会改变对Java Card API的看法,并做出决定,不仅要喜欢它,还要喜欢它! ;) ;)

Note that, in comparison with Java Cards, there are some other kind of cards named "Native Cards". 请注意,与Java卡相比,还有其他种类的卡,称为“本机卡”。 The operation system in this cards is not Java Card Runtime Environment/Virtual Machine. 该卡中的操作系统不是Java卡运行时环境/虚拟机。 These cards have a proprietary/manufacturer-specific way and language (Normally C or Assembly) to develop applications. 这些卡具有专有/制造商特定的方式和语言(通常为C或程序集)来开发应用程序。 But it is not as easy as Java Card applet development. 但这并不像Java Card applet开发那么容易。 And you will make a decision to try to ....love it again :D 然后您将决定尝试....再次爱上它:D

Update : (Thanks to dear Vojta) 更新:(感谢亲爱的伏伊塔)

Sorry, I was forgot that. 对不起,我忘了。 As Vojta mentioned in his comment, one of most known native card types is MULTOS. 正如伏伊塔(Vojta)在其评论中提到的,最著名的本机卡类型之一是MULTOS。 You can write programs in C, Java, Assembly and some other language for these cards and after that you must convert them to MELL (MULTOS card's language) using SwiftCard tool (consist of SwiftC and SwiftJ and ...). 您可以使用C,Java,Assembly和其他语言为这些卡编写程序然后必须使用SwiftCard工具(由SwiftC和SwiftJ和...组成)将它们转换为MELL (MULTOS卡的语言)。 Some good documents here and here . 这里这里有一些好的文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM