• 技术文章 >Java >java教程

    AES简单加密解密的方法实现(源码分享)

    巴扎黑巴扎黑2017-06-26 09:32:46原创627
    package com.mstf.aes;
     
    import java.io.UnsupportedEncodingException;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
     
    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.KeyGenerator;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
     
    /**
     * AES加密解密
     * @author ceet
     *
     */
    public class AESUntil {
    	/**
    	 * 加密
    	 * 
    	 *
    	 */
    	public static String Ecodes(String content, String key) {
    		if (content == null || content.length() < 1)
    			return null;
     
    		try {
    			KeyGenerator kgen = KeyGenerator.getInstance("AES");
    			kgen.init(128, new SecureRandom(key.getBytes()));
    			SecretKey secretKey = kgen.generateKey();
    			byte[] enCodeFormat = secretKey.getEncoded();
    			SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
    			Cipher cipher = Cipher.getInstance("AES");
    			byte[] byteContent = content.getBytes("utf-8");
    			cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    			byte[] byteRresult = cipher.doFinal(byteContent);
    			StringBuffer sb = new StringBuffer();
    			for (int i = 0; i < byteRresult.length; i++) {
    				String hex = Integer.toHexString(byteRresult[i] & 0xFF);
    				if (hex.length() == 1) {
    					hex = '0' + hex;
    				}
    				sb.append(hex.toUpperCase());
    			}
    			return sb.toString();
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			e.printStackTrace();
    		} catch (InvalidKeyException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IllegalBlockSizeException e) {
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
     
    	/**
    	 * 解密
    	 * 
    	 * 
    	 */
    	public static String Dcodes(String content, String key) {
    		if (content == null || content.length() < 1)
    			return null;
     
    		if (content.trim().length() < 19)
    			return content;
     
    		byte[] byteRresult = new byte[content.length() / 2];
    		for (int i = 0; i < content.length() / 2; i++) {
    			int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);
    			int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);
    			byteRresult[i] = (byte) (high * 16 + low);
    		}
    		try {
    			KeyGenerator kgen = KeyGenerator.getInstance("AES");
    			kgen.init(128, new SecureRandom(key.getBytes()));
    			SecretKey secretKey = kgen.generateKey();
    			byte[] enCodeFormat = secretKey.getEncoded();
    			SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
    			Cipher cipher = Cipher.getInstance("AES");
    			cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    			byte[] result = cipher.doFinal(byteRresult);
    			return new String(result);
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			e.printStackTrace();
    		} catch (InvalidKeyException e) {
    			e.printStackTrace();
    		} catch (IllegalBlockSizeException e) {
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
     
    	/**
    	 * 详细解释
    	 * 【ceet为加密的密匙】
    	 * 【admin为需要加密的字符串】
    	 * 【67BE5ED967DBA9B9810C295BE6DEF5D5为解密后的字符串】
    	 * 【如果更改ceet,那么67BE5ED967DBA9B9810C295BE6DEF5D5字符串会发生变化】
    	 * @param args
    	 */
    	// 调用测试
    	public static void main(String[] args) {
    		System.out.println("需要加密的内容:"+Ecodes("admin", "ceet"));
    		System.out.println("经过解密的内容:"+Dcodes("67BE5ED967DBA9B9810C295BE6DEF5D5", "ceet"));
    	}
    }

      

    以上就是AES简单加密解密的方法实现(源码分享)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:最简单的DES加密算法实现(源码分享) 下一篇:RSA加密和解密的实例介绍
    千万级数据并发解决方案

    相关文章推荐

    • 一文搞懂Java接口• 一起来理解Java中的泛型• 整理分享Java语言表达式的五个谜题• 详细整理java枚举的使用总结• java反射机制详细解析(总结分享)
    1/1

    PHP中文网