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

Reply via email to