java AES加密解密
2012-04-12 22:05
323 查看
import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.*; import javax.crypto.spec.*; /** * * @author wchun * * AES128 算法,加密模式为ECB,填充模式为 pkcs7(实际就是pkcs5) * * */ public class AES { static final String algorithmStr="AES/ECB/PKCS5Padding"; static private KeyGenerator keyGen; static private Cipher cipher; static boolean isInited=false; //初始化 static private void init() { //初始化keyGen try { keyGen=KeyGenerator.getInstance("AES"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } keyGen.init(128); //初始化cipher try { cipher=Cipher.getInstance(algorithmStr); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } isInited=true; } public static byte[] GenKey() { if(!isInited)//如果没有初始化过,则初始化 { init(); } return keyGen.generateKey().getEncoded(); } public static byte[] Encrypt(byte[] content,byte[] keyBytes) { byte[] encryptedText=null; if(!isInited)//为初始化 { init(); } Key key=new SecretKeySpec(keyBytes,"AES"); try { cipher.init(Cipher.ENCRYPT_MODE, key); } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { encryptedText=cipher.doFinal(content); } catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return encryptedText; } //解密为byte[] public static byte[] DecryptToBytes(byte[] content,byte[] keyBytes) { byte[] originBytes=null; if(!isInited) { init(); } Key key=new SecretKeySpec(keyBytes,"AES"); try { cipher.init(Cipher.DECRYPT_MODE, key); } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } //解密 try { originBytes=cipher.doFinal(content); } catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return originBytes; } }
相关文章推荐
- CryptoJS & JAVA AES加密、解密
- java和js实现aes加密解密
- 【java】AES加密解密|及Base64的使用
- JAVA的对称加密算法AES——加密和解密
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES
- Java加密解密算法-AES加密解密
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现【多种语言AES/CBC/PKCS5Padding通用加解密数据】
- JS客户端AES加密,Java服务端解密
- JAVA的对称加密算法AES——加密和解密
- 【java】AES加密解密|及Base64的使用
- Java DES算法加密解密与AES密码算法
- java实现AES加密解密
- java 下的 AES org.bouncycastle.crypto 包加密解密算法示例
- java/php对应的AES/CBC/PKCS5Padding模式 加密解密
- java_AES加密解密文件以及字符串
- Php AES加密、解密与Java互操作的问题
- js和java中的AES加密和解密
- 两种JavaScript的AES加密方式(可与Java相互加解密)
- Java AES加密解密的简单实现方法