• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Encrypt and decrypt to webserver - php

Why not just use HTTPS ??????

That is what most of the world does when communicating with web-servers.
 
Why not just use HTTPS ??????

That is what most of the world does when communicating with web-servers.
because it is not only about securing transfer the data.
but storing the data in android phone that sometimes need to send back to web server.
so in the event the android phone is somehow lost, other people can not read/ get the data from it.
 
finaly i did the encryption method from Encrypt with Android using AES, decrypt with PHP... - Android Developers | Google Groups
use jsp webserver.

but the encryption result is not the same between android and jsp webserver.
i did check every code line from both side, and it is same.
anyone can help, what thing i should take note from this problem?

the java code i use in android and jsp :
Code:
public class SimpleCrypto { 
         public static String encrypt(String seed, String  cleartext) throws 
 Exception { 
                 byte[] rawKey = getRawKey(seed.getBytes()); 
                 byte[] result = encrypt(rawKey, 
 cleartext.getBytes()); 
                 return toHex(result); 
         } 
 
        public static String decrypt(String seed, String  encrypted) throws 
 Exception { 
                 byte[] rawKey = getRawKey(seed.getBytes()); 
                 byte[] enc = toByte(encrypted); 
                 byte[] result = decrypt(rawKey, enc); 
                 return new String(result); 
         } 
 
        private static byte[] getRawKey(byte[] seed) throws  Exception { 
                 KeyGenerator kgen =  KeyGenerator.getInstance("AES"); 
                 SecureRandom sr =  SecureRandom.getInstance("SHA1PRNG"); 
                 sr.setSeed(seed); 
             kgen.init(128, sr); // 192 and 256 bits may not be  available 
             SecretKey skey = kgen.generateKey(); 
             byte[] raw = skey.getEncoded(); 
             return raw; 
         } 
 
        private static byte[] encrypt(byte[] raw, byte[]  clear) throws 
 Exception { 
             SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
                 Cipher cipher = Cipher.getInstance("AES"); 
             cipher.init(Cipher.ENCRYPT_MODE, skeySpec); 
             byte[] encrypted = cipher.doFinal(clear); 
                 return encrypted; 
         } 
 
        private static byte[] decrypt(byte[] raw, byte[]  encrypted) throws 
 Exception { 
             SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
                 Cipher cipher = Cipher.getInstance("AES"); 
             cipher.init(Cipher.DECRYPT_MODE, skeySpec); 
             byte[] decrypted = cipher.doFinal(encrypted); 
                 return decrypted; 
         } 
 
        public static String toHex(String txt) { 
                 return toHex(txt.getBytes()); 
         } 
         public static String fromHex(String hex) { 
                 return new String(toByte(hex)); 
         } 
 
        public static byte[] toByte(String hexString) { 
                 int len = hexString.length()/2; 
                 byte[] result = new byte[len]; 
                 for (int i = 0; i < len; i++) 
                         result[i] =  Integer.valueOf(hexString.substring(2*i, 2*i+2), 
 16).byteValue(); 
                 return result; 
         } 
 
        public static String toHex(byte[] buf) { 
                 if (buf == null) 
                         return ""; 
                 StringBuffer result = new  StringBuffer(2*buf.length); 
                 for (int i = 0; i < buf.length; i++) { 
                         appendHex(result, buf[i]); 
                 } 
                 return result.toString(); 
         } 
         private final static String HEX = "0123456789ABCDEF"; 
         private static void appendHex(StringBuffer sb, byte b) { 
                  sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f)); 
         } 
 
}
 
Back
Top Bottom