Sto scrivendo un programma che utilizza RSA in Android. Ho il seguente problema: sto ottenendo le chiavi RSA:Codifica RSA in Android
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
Utilizzando la funzione di crittografia per cifrare una stringa di prova:
String test ="test";
byte[] testbytes = test.getBytes();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherData = cipher.doFinal(testbytes);
String s = new String(cipherData);
Log.d("testbytes after encryption",s);
Nella funzione di decifratura sto decodificare i dati indietro a prenderlo la stringa originale
Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, privateKey);
byte[] plainData = cipher.doFinal(cipherData);
String p = new String(plainData);
Log.d("decrypted data is:",p);
I dati contenuti nel 'p' stampato nel log non corrisponde alla stringa originale "test". Dove sto andando male in questo?
bene che cosa è stampato nel registro? Se avessi le chiavi di mancata corrispondenza o il codice confuso otterresti un'eccezione, non una risposta errata. –
Si noti inoltre che 'cipherData' sarà una stringa binaria casuale, quindi convertirla in una stringa usando solo i byte non elaborati (' String s = new String (cipherData); ') potrebbe dare strani risultati. –