使用公共私鑰加密和解密資料
使用公鑰加密資料:
final Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
rsa.update(message.getBytes());
final byte[] result = rsa.doFinal();
System.out.println("Message: " + message);
System.out.println("Encrypted: " + DatatypeConverter.printHexBinary(result));
產生的輸出類似於:
Message: Hello
Encrypted: 5641FBB9558ECFA9ED...
請注意,在建立 Cipher
物件時,必須指定與所使用的鍵型別相容的轉換。 (有關支援的轉換列表,請參閱 JCA 標準演算法名稱 。)。對於 RSA 加密資料,message.getBytes()
長度必須小於金鑰大小。請參閱此 SO 答案瞭解詳情。
要解密資料:
final Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
rsa.update(cipherText);
final String result = new String(rsa.doFinal());
System.out.println("Decrypted: " + result);
產生以下輸出:
Decrypted: Hello