[英]Encrypt Content by RSA in Android / Java
public static String encryptByPublicKey(byte[] data, String key)
throws Exception {
byte[] keyBytes = decryptBASE64(key);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
Key publicKey = keyFactory.generatePublic(x509KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return new String(cipher.doFinal(data));
}
我有一個公鑰,例如MFWww.........EAAQ==
。 當我將字符串傳遞給該參數時,加密的消息是一些未知字符。 因此,我懷疑在將鍵傳遞給函數之前,應該先對鍵進行一些操作。 但我不知道如何做到。 因此,看到任何人都可以提供幫助。
謝謝
永遠不要將任意二進制數據傳遞給String
構造函數。 您沒有編碼的文本 ,您具有任意字節。 那不是String
構造函數的目的。
理想情況下,根本不要將二進制數據表示為文本,但是,如果需要的話,請使用base64或hex進行操作,這將以ASCII編碼任意二進制數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.