Ich möchte SHA-3-Algorithmus auf einer Java-Karte optimieren. Ich brauche einen schnellen Algorithmus, der weniger Speicher verbraucht, was es ermöglicht, byte[]
zu short[]
(oder kurz []
zu byte[]
) zu konvertieren. Meine aktuelle Implementierung sieht wie folgt aus:Schnelle Möglichkeit, Byte [] in Kurz [] auf Java-Karte zu konvertieren
private short[] byteToShort(byte[] b,int len)
{
short len_conv = (short)(len/2);
for (short x = 0; x < len_conv;x++)
{
for (short j = 0 ; j < 2 ; j++)
aux[j] = b[2*x+j];
temp_conv[x] = (short)((((short)aux[1]) & 0xFF) | ((((short)(aux[0]) & 0xFF) << 8)));
}
return temp_conv;
}
wo len
tatsächliche Größe des b
Array und aux
und temp_conv
werden als private definiert und zugewiesen, wie:
short[] temp_conv = JCSystem.makeTransientShortArray((short)255,JCSystem.CLEAR_ON_DESELECT); // used during conversion
byte[] aux = new byte[2];
Ich verwende derzeit Java Card v 2.2. 2
Sie könnten versuchen, die Schleife ein wenig Abrollen: https://en.wikipedia.org/wiki/Loop_unrolling – Bill