Java AES 加密 解密 示例
2013-12-12 14:08
453 查看
代码:
运行结果:
密 钥:AEStest
加密前:AEStest
加密后:24C2584138719D77C4FEBDE382D84648
解密后:AEStest
package com.techzero.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; /** * AESTest.java * * @author Techzero * @Email techzero@163.com * @Time 2013-12-12 下午1:25:44 */ public class AESTest { public static void main(String[] args) { String content = "AEStest"; String password = "AEStest"; 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; } }
运行结果:
密 钥:AEStest
加密前:AEStest
加密后:24C2584138719D77C4FEBDE382D84648
解密后:AEStest
相关文章推荐
- Java AES加密解密示例
- java 下的 AES javax.crypto包 加密解密算法示例
- java使用Hex编码解码实现Aes加密解密功能示例
- Java与Node.js利用AES加密解密出相同结果的方法示例
- java 下的 AES org.bouncycastle.crypto 包加密解密算法示例
- JAVA AES加密解密
- AES加密php,java,.net三种语言同步实现加密、解密
- Java 加密解密之对称加密算法AES
- Java 加密解密之对称加密算法AES
- java加密解密示例分享
- JAVA中使用AES加密解密
- 【java】AES加密解密|及Base64的使用
- 基于Android系统的AES加密、解密的JAVA实现
- 【java】AES加密解密|及Base64的使用
- Java 3DES 加密 解密 示例
- Java AES加密解密算法
- Java 加密解密之对称加密算法AES
- Java DES算法加密解密与AES密码算法
- Java中3DES加密解密调用示例