簡體   English   中英

通過RSA在Android / Java中加密內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM