Java AES加密解密工具类
来源:互联网 发布:java方法泛型类型参数 编辑:程序博客网 时间:2024/06/05 18:04
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; /** * AESUtil.java * * @author Techzero * @Email techzero@163.com * @Time 2013-12-12 下午1:25:44 */public class AESUtil { public static void main(String[] args) { String content = "AEStest123"; String password = "ytd2016"; System.out.println("密 钥:" + password); System.out.println("加密前:" + content); // 加密 String encryptResult = encrypt(content, password); System.out.println("加密后:" + encryptResult); // 解密 String decryptResult = decrypt(encryptResult, password); System.out.println("解密后:" + decryptResult); } /** * 加密 * * @param content * 待加密内容 * @param key * 加密的密钥 * @return */ public static String encrypt(String content, String key) { 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; } /** * 解密 * * @param content * 待解密内容 * @param key * 解密的密钥 * @return */ public static String decrypt(String content, String key) { if (content.length() < 1) return null; 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; } }
0 0
- Java AES加密解密工具类
- AES加密解密工具类
- AES加密、解密工具类
- 【工具类】Java实现AES算法 加密和解密
- java RSA和AES加密解密工具
- 【工具类】AES加密和解密
- 【工具类】AES加密和解密
- AES加密和解密工具类
- AES 对称加密解密工具类
- 加密解密。(aes, java)
- java,AES加密,解密
- java AES加密解密
- java AES加密解密
- java AES加密解密
- java AES 加密/解密
- Java AES加密解密
- java AES 加密解密
- JAVA AES加密/解密
- ubuntu下samba 安装与配置
- Python - 批量更改文件名
- 关于移动购物应用中的购物车效果的实现
- iOS,Android网络抓包教程之tcpdump
- 好的网址
- Java AES加密解密工具类
- 大陆网络下如何快速使用Android SDK Manager进行联网更新和下载
- Toolbar的介绍和使用
- HTML5开发移动web应用——SAP UI5篇(6)
- 上帝设计的软件系统
- 对象共享避免创建多对象享元模式-- 笔记
- 马尔可夫决策过程MDP
- javaScript基础知识<一>
- sql server 使用over 统计百分比