Ho la matrice di byte della chiave pubblica RSA. Ho trovato su internet che posso creare un oggetto PublicKey vera e propria di esso utilizzando questo codice:Java: Come creare una chiave pubblica RSA dalla stringa
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));
Ma ogni volta che esegue questo codice, sto ricevendo un altro risultato per i dati crittografati utilizzando la chiave. Sono sicuro che i dati che voglio crittografare sono sempre gli stessi, così come la matrice di byte che rappresenta la chiave.
È normale?
Ecco il mio codice produce sempre un'altra uscita:
byte[] keyBytes = Base64.decodeBase64(rsa_1024_public_key);
// rsa_1024_public key is a constant String
Cipher c = Cipher.getInstance("RSA");
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes));
c.init(Cipher.ENCRYPT_MODE, publicKey);
return c.doFinal(password.getBytes());
Questa è probabilmente una parte del algoritmo di crittografia asimmetrica?
Grazie.
RSA non è deterministico. – SLaks
@SLaks: vuoi postarlo come risposta? È corretto: D Darò 35 punti rep. –
In realtà 15; Ho raggiunto il limite della reputazione molto tempo fa. :) – SLaks