码迷,mamicode.com
首页 > 编程语言 > 详细

java实现AES方式加密

时间:2018-04-03 12:46:57      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:AES加密

import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class AESUtil {     private static final String IV_STRING = "sdf4ddfsFD86Vdf2";     private static final String encoding = "UTF-8";     public static String encryptAES(String content, String key)             throws InvalidKeyException, NoSuchAlgorithmException,             NoSuchPaddingException, UnsupportedEncodingException,             InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {         byte[] byteContent = content.getBytes(encoding);         // 注意,为了能与 iOS 统一         // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成         byte[] enCodeFormat = key.getBytes(encoding);         SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");         byte[] initParam = IV_STRING.getBytes(encoding);         IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);         // 指定加密的算法、工作模式和填充方式         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");         cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);         byte[] encryptedBytes = cipher.doFinal(byteContent);         // 同样对加密后数据进行 base64 编码         String base64 = new Base64().encodeToString(encryptedBytes);         //进行url编码 去掉= ? &         return URLEncoder.encode(base64,encoding);     }     public static String decryptAES(String content, String key)             throws InvalidKeyException, NoSuchAlgorithmException,             NoSuchPaddingException, InvalidAlgorithmParameterException,             IllegalBlockSizeException, BadPaddingException, IOException {         //URL解码         content = URLDecoder.decode(content,encoding);         // base64 解码         byte[] encryptedBytes = Base64.decodeBase64(content);         byte[] enCodeFormat = key.getBytes(encoding);         SecretKeySpec secretKey = new SecretKeySpec(enCodeFormat, "AES");         byte[] initParam = IV_STRING.getBytes(encoding);         IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");         cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);         byte[] result = cipher.doFinal(encryptedBytes);         return new String(result, encoding);     }          public static void main(String[] args) throws Exception {     JSONObject json = new JSONObject();     json.put("custNum", "111111");     /*json.put("name", "张三");     json.put("cityCode", "100001");     json.put("cityName", "北京市");     json.put("mobileNo", "15651876590");*/         String content = json.toJSONString();         System.out.println("加密前:" + content);         String key = "djadiKJdj49dFJLd";         System.out.println("加密密钥和解密密钥:" + key);         String encrypt = encryptAES(content, key);         System.out.println("加密后:" + encrypt);         String decrypt = decryptAES(encrypt , key);         System.out.println("解密后:" + decrypt);     } }


java实现AES方式加密

标签:AES加密

原文地址:http://blog.51cto.com/1385903/2094164

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!