Wednesday, October 23, 2013

Android Example for encrypt and decrypt using AES Algorithms

Android Example for encrypt and decrypt using AES Algorithms

Below the example for how to encrypt and decrypt the values Using AES Algorithms. Make our data store in  secure.

Screen Shot



AESHelper class

package com.example.encription;

import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class AESHelper {

        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));
        }
       

}

Activity Source Code

package com.example.encription;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;


/***
 *
 * @author vijay
 *
 */
public class MainActivity extends Activity {

       String seedValue = "This Is MySecure";
      
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
                 String normalText = "VIJAY";
              String normalTextEnc;
                     try {
                               normalTextEnc = AESHelper.encrypt(seedValue, normalText);
                               String normalTextDec = AESHelper.decrypt(seedValue, normalTextEnc);
                             TextView txe = new TextView(this);
                             txe.setTextSize(14);
                             txe.setText("Normal Text ::"+normalText +" \n Encrypted Value :: "+normalTextEnc +" \n Decrypted value :: "+normalTextDec);
                             setContentView(txe);
                     } catch (Exception e) {
                           // TODO Auto-generated catch block
                           e.printStackTrace();
                     }
           

           
       }

      
}

7 comments:

  1. Thanks for helpful post....waiting for next post now.. u rock "VJ"

    ReplyDelete
  2. nice code pattern,can you add some comment in each area so it help more

    ReplyDelete
  3. Thank you so much.

    ReplyDelete
  4. Why this is not working in Android version 4.2.1 but works on android2.3

    ReplyDelete
  5. NOT WORK ON ANDROID>4.2. Securerandom problem.

    ReplyDelete
  6. Nice! I like the example. I tried to extend your example for a project I am working on.

    Instead of using the onCreate method I created a decryptText and encryptText methods like below. I renamed your AESHelper class to AESCrypto. encryptText works great, but your AESHelper class returns and empty string to my decryptText method. What am I missing?

    public String encryptText(String str)
    {
    String clearText = str;
    String normalTextEnc = null;
    try {
    normalTextEnc = AESCrypto.encrypt(seedValue, clearText);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return normalTextEnc;
    }
    public String decryptText(String str)
    {
    String encodedText = str;
    String clearText = null;
    try {
    clearText = AESCrypto.decrypt(seedValue, encodedText);;
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return clearText;
    }

    ReplyDelete

Check out this may be help you

Related Posts Plugin for WordPress, Blogger...