I just see garbage in your stack trace, but are you certain the private key
is pkcs8 encoded?

When you test on your desktop, is that on the emulator, a java program or
some other language?

Also, it may not have anything to do with the android sdk, so is probably
off-topic here.
On Apr 26, 2012 9:27 AM, "Joseph" <[email protected]> wrote:

> I am trying to decrypt a String, that I have encrypted elsewhere. Here
> is my code:
>
> private void test() {
>
>    try {
>        String
>
> stringMessage="Sf3O7Lr2+WN5szGyLejL3CjuBRZtQ72+ZBmgVTgWnatQZxUElzaBqFa1p0SVBqe9VWVxCxdEkejMVtDGEr0UJSVSK8EB/
> fPI6v8JE8dIu0JN0mMs4xlowhITy0tQR+1pcBtDFjzOl33xxQcq5JuPezxRDxFIp
> +IVkD8FdpqlttEKf2Tvqw9tqsdgiBKb5xDvKrkIDQXdLBh1gbAVZDSJYGHRkcOA8vz2ty/
> PeooKkfDK6IOn7KBwOBgSRgQr/MLBF3Xk2vRWgVGRh/fRkzu21EWo99Q5moWKxWl3HW/
> bbgTBQTb097XP3NTID9kSPhCfL0BEfBxonuNse5GBoeRnCw==";
>        //Convert String back to Byte[] and decrpt
>        byte[] byteMessage =
> Base64.decodeBase64(stringMessage.getBytes("UTF-8"));
>        System.out.println("ENCRYPTED MESSAGE byte Length:
> "+byteMessage.length);
>
>        String decryptedMsg = decryptString(byteMessage,
> loadCASPrivateKey());
>        System.out.println(decryptedMsg);
>    } catch (Exception e) {
>        e.printStackTrace();
>        return;
>    }
> }
>
> private static String decryptString(byte[] message, Key privateKey)
> throws InvalidKeyException, NoSuchAlgorithmException,
> NoSuchPaddingException, IllegalBlockSizeException,
> BadPaddingException, UnsupportedEncodingException {
>    Cipher cipher = Cipher.getInstance("RSA");
>    cipher.init(Cipher.DECRYPT_MODE, privateKey);
>
>    byte[] cipherData = cipher.doFinal(message);
>    return new String(cipherData, "UTF-8");
> }
>
> private PrivateKey loadCASPrivateKey() throws IOException,
> NoSuchAlgorithmException, InvalidKeySpecException {
>    InputStream is = getClass().getResourceAsStream( "/keys/app-
> private.key" );
>    if (is == null) {
>        System.out.println("NULL");
>    }
>    byte[] encodedPrivateKey = new byte[(int) 2000];
>    is.read(encodedPrivateKey);
>    is.close();
>
>    // Generate KeyPair.
>    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
>
>    PKCS8EncodedKeySpec privateKeySpec = new
> PKCS8EncodedKeySpec(encodedPrivateKey);
>    PrivateKey privateKey =
> keyFactory.generatePrivate(privateKeySpec);
>
>    return privateKey;
>
> }
> This works 100% how I would like it to under my desktop JVM, however
> when I run it in the Android emulator I get:
>
> 04-24 22:42:21.011: I/System.out(1041): ��k���_��*�ݣ���93|
> @0�̍4�y)��Q�k�;*A����e�#��A� �oiu:�����W5@$�w�j��uS�R�Ocxٰ&����l �w'/
> �d�8uA��ؔ�{�4$�U�0��{Ԑ��t!9��n�� ��a��'Jdt2�t�T�D��k+k�;������ ����GF��
> \�rڼ��>]�y+^w�<�� ��'E{�8R]�ZHyu��ζ��軟�ށ掱�{�A�#ȟ�
>
> I assume my problem is down to encoding, but I've spent all day trying
> to work out what and am really stumped.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to