您的位置:首页 > 移动开发 > Android开发

android AES加密

2015-08-16 15:49 519 查看
public class AESDeHelper

{

    private static String KEY = "38383388";

    private static final String TAG="AESHelper";

    private final static String HEX = "0123456789ABCDEF";  

    

      /**

     * AES加密

     */

    public static String encrypt(String content)  

    {  

        byte[] rawKey = getRawKey(KEY.getBytes());  

        byte[] result=null;

        String res=content;

        try {

            result = encrypt(rawKey, content.getBytes());

            res    =toHex(result);

        } catch (Exception e)

        {

             LogUtil.e(TAG, "加密异常:"+e.getMessage());

            e.printStackTrace();

        }  

        return  res;

    }  

      

    /**

     * AES解密

     */

    public static String decrypt(String content)

    {  

        byte[] rawKey=null;

        String res="";

        try {            

            rawKey = getRawKey(KEY.getBytes());

            byte[] enc = toByte(content);  

            byte[] result = decrypt(rawKey, enc);  

            res =new String(result);

        } catch (Exception e)

        {

               LogUtil.e(TAG, "解密异常");

            e.printStackTrace();

        }      

        return  res;  

    }  

 

    private static byte[] getRawKey(byte[] seed)

    {  

        

        KeyGenerator kgen=null;

        byte[] raw=null;

        try {

            kgen = KeyGenerator.getInstance("AES");

            SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");  

            sr.setSeed(seed);  

            kgen.init(128, sr);  

            SecretKey skey = kgen.generateKey();  

            raw = skey.getEncoded();

        } catch (NoSuchAlgorithmException e)

        {

            e.printStackTrace();

        } catch (NoSuchProviderException e)

        {

            e.printStackTrace();

        }         

        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;  

    }  

 

    private static String toHex(String txt)

    {  

        return toHex(txt.getBytes());  

    }  

    private static String fromHex(String hex)

    {  

        return new String(toByte(hex));  

    }  

      

    private 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;  

    }  

 

    private 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 static void appendHex(StringBuffer sb, byte b)

    {  

        sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));  

    }  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android AES 加密