AES加密和解密

来源:互联网 发布:培训机构网络推广方案 编辑:程序博客网 时间:2024/05/21 20:21
import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;/** * * @author Administrator * */public class AES {    // 加密    public static String Encrypt(String sSrc, String sKey) throws Exception {        if (sKey == null) {            System.out.print("Key为空null");            return null;        }        // 判断Key是否为16位        if (sKey.length() != 16) {            System.out.print("Key长度不是16位");            return null;        }        byte[] raw = sKey.getBytes("utf-8");        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));        return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。    }    // 解密    public static String Decrypt(String sSrc, String sKey) throws Exception {        try {            // 判断Key是否正确            if (sKey == null) {                System.out.print("Key为空null");                return null;            }            // 判断Key是否为16位            if (sKey.length() != 16) {                System.out.print("Key长度不是16位");                return null;            }            byte[] raw = sKey.getBytes("utf-8");            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");            cipher.init(Cipher.DECRYPT_MODE, skeySpec);            byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密            try {                byte[] original = cipher.doFinal(encrypted1);                String originalString = new String(original,"utf-8");                return originalString;            } catch (Exception e) {                System.out.println(e.toString());                return null;            }        } catch (Exception ex) {            System.out.println(ex.toString());            return null;        }    }    public static void main(String[] args) throws Exception {        /*         * 此处使用AES-128-ECB加密模式,key需要为16位。         */        String cKey = "1234567890123456";        // 需要加密的字串        String cSrc = "www.gowhere.so";        System.out.println(cSrc);        // 加密        String enString = AES.Encrypt(cSrc, cKey);        System.out.println("加密后的字串是:" + enString);        // 解密        String DeString = AES.Decrypt(enString, cKey);        System.out.println("解密后的字串是:" + DeString);    }}
参考:http://www.cnblogs.com/chen-lhx/p/5817161.html

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苏格兰牧羊犬幼犬 灰色贵宾犬 狗狗药浴 阿拉斯加雪橇犬有多大 威尔士柯基犬幼犬 法斗犬好养吗 阿拉斯加雪橇犬多重 司机在车流中遛狗 养不大的宠物狗 遛2鬼 酥油饼 遛鬼 酥油饼 十斤以上大鱼的遛鱼方法 遛鸟图片 vlog生活by游溯之 一步之遥 遥组词 路人借问遥招手 草色遥看近却无 路人借问遥招手下一句 福原遥 户松遥 岛野遥香 慕遥 遥笔顺 遥不可及 遥不可及意思 什么遥什么远 遥墙机场 遥不可及什么意思 遥怜小儿女,未解忆长安 男配离我远点 遥忆长安 近水遥山皆有情的上一句 遥感 遥感技术 爱遥感 遥感科学与技术专业 武汉大学遥感信息工程学院 遥感科学与技术 武汉大学遥感学院 遥感科学与技术就业前景