For everyone who are sending me mails about this topic. I answered in this thread http://www.anddev.org/topic16062.html on anddev forum with a complete solutions and a working code snippets, please don't send me private mails, forum "intent" is to help people not a person. So a public answer could be more useful :)
Ciao. On Jul 20, 10:24 am, Bob Kerns <[email protected]> wrote: > A good rule to follow is that you should never, ever, call the > getBytes() method, nor any method or constructor in the SDK that has a > variant that takes a character encoding. I've fixed an incredible > number of bugs from this cause. > > You almost always want to supply "UTF-8" as that encoding, too. > > On Jul 19, 12:57 pm, sblantipodi <[email protected]> wrote: > > > 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

