i have some problems when i try to encrypt a string with a public key 
stored in res/raw thesis the encrypt method code:

public static byte[] encryptRSA(Context mContext, byte[] message) throws 
Exception { 

        // reads the public key stored in a file
        InputStream is = 
mContext.getResources().openRawResource(R.raw.marchandpkey);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        List<String> lines = new ArrayList<String>();
        String line = null;
        while ((line = br.readLine()) != null)
            lines.add(line);

        // removes the first and last lines of the file (comments)
        if (lines.size() > 1 && lines.get(0).startsWith("-----") && 
lines.get(lines.size()-1).startsWith("-----")) {
            lines.remove(0);
            lines.remove(lines.size()-1);
        }

        // concats the remaining lines to a single String
        StringBuilder sb = new StringBuilder();
        for (String aLine: lines)
            sb.append(aLine);
        String keyString = sb.toString();
        Log.d("log", "keyString:"+keyString);

        // converts the String to a PublicKey instance
       byte[] keyBytes = Base64.decode(keyString.getBytes("utf-8"), 
DEFAULT_KEYS_DIALER);
        X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey key = keyFactory.generatePublic(spec);



        byte[] encryptedText = null;
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        encryptedText = cipher.doFinal(Base64.decode(message, 
DEFAULT_KEYS_DIALER));

       return encryptedText;
   }

`

and here in "oncreate method" i make a call for the encrypt method:

final String KEY_BOOK = "mes_item_to_crypt";
    byte[] first_message = KEY_BOOK.getBytes();
    byte[] second_message = null;
    try {
        second_message=encryptRSA(getApplicationContext(), first_message);
        Toast.makeText(getApplicationContext(), ""+second_message.toString(), 
Toast.LENGTH_SHORT).show();
    } catch (Exception e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

i got this in the logcat screen:

* 01-10 01:03:33.620: W/System.err(672): 
java.security.spec.InvalidKeySpecException: java.lang.IllegalArgumentException: 
Bad sequence size: 301-10 01:03:33.620: W/System.err(672):  at 
org.bouncycastle.jce.provider.JDKKeyFactory.engineGeneratePublic(JDKKeyFactory.java:92)01-10
 01:03:33.630: W/System.err(672):  at 
org.bouncycastle.jce.provider.JDKKeyFactory$RSA.engineGeneratePublic(JDKKeyFactory.java:396)01-10
 01:03:33.630: W/System.err(672):  at 
java.security.KeyFactory.generatePublic(KeyFactory.java:177)01-10 01:03:33.630: 
W/System.err(672):  at 
fsg.mpssri.Megabook.Show.MainLivres.encryptRSA(MainLivres.java:441)01-10 
01:03:33.630: W/System.err(672):  at 
fsg.mpssri.Megabook.Show.MainLivres.onCreate(MainLivres.java:168)*

and this's my public key stored in res/raw

    -----BEGIN 
CERTIFICATE-----MIIDuDCCAqACCQDxZX5jygcxvzANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMC
VE4xEDAOBgNVBAgMB1RVTklTSUUxDTALBgNVBAcMBFNGQVgxFTATBgNVBAoMDEluZXNDb21wYWdueTETMBEGA1UECwwKU2VydmV1cldlYjEXMBUGA1UEAwwOaW5lc2Rv
bWFpbmUudG4xKDAmBgkqhkiG9w0BCQEWGWJlbGhvdWNoZXQuaW5lc0BnbWFpbC5j
b20wHhcNMTMwMTA5MTQwMzE1WhcNMTQwMTA5MTQwMzE1WjCBnTELMAkGA1UEBhMC
VE4xEDAOBgNVBAgMB1RVTklTSUUxDTALBgNVBAcMBFNGQVgxFTATBgNVBAoMDEluZXNDb21wYWdueTETMBEGA1UECwwKU2VydmV1cldlYjEXMBUGA1UEAwwOaW5lc2Rv
bWFpbmUudG4xKDAmBgkqhkiG9w0BCQEWGWJlbGhvdWNoZXQuaW5lc0BnbWFpbC5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtGJbgWuUOyQ4KgfbbVsPO+5/xnBSZlPb7CnW/IHfibcQ+29EALFVp/cpZfn4WdPtQGjSU7cFY7wcoOLnl
vDWB5B4JLJHiUnTnvQT3GA1toJFkj0wqOgggfpq/ia5wCREqd7JnVfCJ/kA77M4e
fl5ArmObwe1XQy+DRYk67rx1NZ2c2eiEcwUj/v+puF+xJzVpdCg93dbEhTf9A7t2
loqESsBiX2CVaMtLLUK3y+g8etKL51m/PZHVXDMwJTkoje9X3cjh133YuxScMqVm
jL40p1/vHAhtkVbnned0yjLPKLH+pCI4mB285WCY7Tn6UupBZG4ttzHFdQpdq0E4UNsFAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBANRPF1TcksXetiscM6qxd9CmgV9/
atkLghMNd/EU6H3E8HB1WPhvo9bdTO+uz1lUJW3vrDpOhp/cU+P1k9cplD8k9Mml5EK0sJbS63Gl7J3h7U9QDwQ9EIU5eOanhi19wBs775LU6aqXXDE/nzE+XSoEvV0AIMlmqd7Yo0VRqqdD0Pg9ih7MD583ApnRDXzxzvbL6ioHnRyrrtWPfMtA0EqbcwsgPovq7vL7jdqgx4HD/a8mlvKvM4y4khZox4wr8uJq/KtcbFy4BRsk7BwQVcssAyDRLXNr/u/mb7fhMj9fTNh2GGbNPjspvctAp3WIlkZeSLFZhA/QolutsnJ2nKc=-----END
 CERTIFICATE-----

please help me with any idea,i just want to encrypt a string on android 
with a public_key ,this public key i make it in the web server side (php). 
my point is to encrypt a string in android with the web server public key 
and after that i will decrypt that string in php (server side ). please i 
need your help .
thanks 
 <http://stackoverflow.com/questions/tagged/android>

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

Reply via email to