com.elle.analyster.admissions.AESCrypt.java Source code

Java tutorial

Introduction

Here is the source code for com.elle.analyster.admissions.AESCrypt.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.elle.analyster.admissions;

/**
 *
 * @author ren
 */
//import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
//import sun.misc.BASE64Decoder;
//import sun.misc.BASE64Encoder;
import org.apache.commons.codec.binary.Base64;

public class AESCrypt {
    /* old encryption method  by Wei
     private static final String ALGORITHM = "AES";
     private static final String KEY = "1Hbfh667adfDEJ78";
     //private static final String KEY = "ABEiM0RVZneImaq7zN3u/w==";
        
         
     public static String encrypt(String value) throws Exception
     {
    Key key = generateKey();
    Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, key);
    byte [] encryptedByteValue = cipher.doFinal(value.getBytes("utf-8"));
    String encryptedValue64 = new BASE64Encoder().encode(encryptedByteValue);
    return encryptedValue64;
               
     }
         
     public static String decrypt(String value) throws Exception
     {
    Key key = generateKey();
    Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM);
    cipher.init(Cipher.DECRYPT_MODE, key);
    byte [] decryptedValue64 = new BASE64Decoder().decodeBuffer(value);
    byte [] decryptedByteValue = cipher.doFinal(decryptedValue64);
    String decryptedValue = new String(decryptedByteValue,"utf-8");
    return decryptedValue;
                
     }
         
     private static Key generateKey() throws Exception 
     {
    Key key = new SecretKeySpec(AESCrypt.KEY.getBytes(),AESCrypt.ALGORITHM);
    return key;
     }
     */

    //new encryption algorithm by Wei using new apache codec lib 
    public static String encrypt(String key, String initVector, String value) {
        try {
            IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

            byte[] encrypted = cipher.doFinal(value.getBytes());
            System.out.println("encrypted string: " + Base64.encodeBase64String(encrypted));

            return Base64.encodeBase64String(encrypted);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }

    public static String decrypt(String key, String initVector, String encrypted) {
        try {
            IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

            byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));

            return new String(original);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }

}