使用公共私鑰加密和解密資料

使用公鑰加密資料:

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