JavaCard Algorithm Test

Detailed analysis of cryptographic smart cards running with JavaCard platform

Supported algorithms Performance comparison Length-dependent performance Detailed card performance

Github download


What is JCAlgTest?

The JCAlgTest tool is devoted to automatic testing of cryptographic smart cards running JavaCard platform. It gathers and visualizes information about card's hardware, supported cryptographic algorithms, and performance in various settings.

Who provides the results

The results are contributed by a) cards owned by us at CRoCS laboratory and b) the wider community which run JCAlgTest on available cards. Together, it creates the largest publicly available database with more than 50 different smart cards.

How can I use it?

You can select a card with required properties before you will buy it. Or you can assess card you already have in your hand and match it to cards in database based on the performance results.

JCAlgTest in more details


The JCAlgTest is set of tools to measure, assess and provide detail information extracted from real cryptographic smart cards with JavaCard platform with corresponding cryptographic JavaCard API specification. Testing itself is easy - requires only to upload an applet to the target smart card and launch a host PC application which will start, collect and extract measurements.

JCAlgTest consists of 3 main modules:

JCAlgTest - JavaCard applet which is uploaded to tested smart card and executes operations measured by the host application. The applet itself contains three main parts:

JCAlgTestClient - Java-based application, running on a host PC that facilitates communication with the target smart card and measure execution time. Controls the whole testing process and stores the gathered information as CSV file. The tool is controlled with simple command line options.

JCAlgTestProcess - -- Java-based application responsible for processing raw CSV file(s) and generation of various tabular and graphical outputs. It can process results for a single card as well as a whole database of previous measurements. The content of the pages you are currently reading were all produced by this tool.

Algorithms support database

Are you looking for a smart card that supports specific cryptographic algorithm? Or you like to see how widespread is support for the elliptic curves? Inspect results collected from more than 50 smart cards and organized in the support matrix.

View database »

Performance comparison

Would you like to know which smart card executes the operation with private RSA key in the shortest time? Or you like to compare two candidate smart cards before buying? Compare the performance of more than 15 current cards in sortable tables.

Compare cards »

Performance with variable data length

The performance of the card and a particular algorithm is not always linear with the increasing length of processed data. See data length-dependency graphs which may help you to improve application speed by optimization of unseen bootlenecks.

Compare cards »


The smart card performance over many cryptographic algorithms can be used as nice metric to identify underlying hardware. Observe which smart cards have a very similar hardware and performs comparably and which are markedly different.

View table »

Knowledge base

We played with a lot of different smart cards, developed helper tools and learned interesting not-so-documented behaviors. Would you like to know what can cause 0x6f00 exception? Or download software implementation of AES, SHA-2 or RSA OAEP when your card does not support what you need? Visit knowledge base for even more.

View more »