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 [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