Ich versuche die modPow
Funktion auf Java Card mit dem eingebauten RSA CryptoSystem zu implementieren. Der Code scheint trivial zu sein, aber ich habe auf Implementierung hingewiesen.Java Card setExponent() Methode schlägt fehl, wenn der Exponent mehr als 10 Bytes hat
Mein Code untill jetzt:
Cipher m_encryptCipherRSA = Cipher.getInstance(Cipher.ALG_RSA_NOPAD, false); // create the cipher
RSAPublicKey m_rsaPublicKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC,KeyBuilder.LENGTH_RSA_1024,false); // create the public key
m_random = RandomData.getInstance(RandomData.ALG_SECURE_RANDOM);
m_random.generateData(temp1, (short)0, MODULUS_LENGTH);
m_rsaPublicKey.setModulus(temp1,(short)0, MODULUS_LENGTH); //generate modulus
m_random.generateData(temp1,(short)0, (short) EXPONENT_LENGTH);
m_rsaPublicKey.setExponent(temp1,(short)0, (short)EXPONENT_LENGTH);
Der Kabeljau ok scheint zu funktionieren, wenn EXPONENT_LENGTH
nicht mehr als 10 bytes.The Java Card Ich habe die Dimension der öffentlichen Exponenten begrenzt hat. Jedoch basiert mein Projekt auf Zahlen bis zu 128
Bytes lang. Gibt es eine Möglichkeit, eine generische modpow
Funktion basierend auf dieser Hardwarebeschränkung zu erstellen? Gibt es eine andere Möglichkeit, die noch mögliche Potenzierung zu implementieren?
Was passiert, wenn Sie 'EXPONENT_LENGTH> 10' verwenden? Welches Statuswort bekommst du? – vojta
@vojta 6f 00 das ist unbekannter Fehler. – Marga
Fangen Sie die ausgelöste Ausnahme und sagen Sie uns ihren Typ (verwenden Sie den Operator instanceof) und ihren Grund (Ausgabe der Methode getReason()). – vojta