Ok I solved with correct byte encoding... Thread closed. On Jul 19, 7:31 pm, sblantipodi <[email protected]> wrote: > OK... > I'm using this class to encrypt/decrypt in android. > 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)); > } > > } > > Now what I have understood is that I need to pass a base64 string to > PHP to get it working. > I'm able to do this in PHP, but I haven't understood what I need to > convert in BASE64. > If I convert into base64 the string outputted from String > encrypt(String seed, String cleartext) > PHP get a junk data when decrypting the string with mcrypt. > Have you got some idea?
-- 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

