我正在編寫一個在Android中使用RSA的程序。我有以下問題: 我收到RSA密鑰:Android中的RSA加密
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
使用加密功能加密測試字符串:
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);
在解密功能,我正在對數據進行解密回去取原始字符串
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);
打印在日誌中的'p'中的數據與原始字符串「test」不匹配。我在哪裏錯了?
那麼是什麼在日誌中打印出來?如果你有不匹配的密鑰或亂碼,你會得到一個異常,而不是一個錯誤的答案。 –
另外請注意''cipherData'將是一個隨機的二進制字符串,所以通過使用原始字節('String s = new String(cipherData);')將它轉換爲一個字符串可能會給你奇怪的結果。 –