java实现AES加密解密
来源:互联网 发布:天佑鲍比知乎 编辑:程序博客网 时间:2024/05/29 16:17
package com.utils;import org.apache.tomcat.util.codec.binary.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import java.io.UnsupportedEncodingException;/** * Created by IntelliJ IDEA * <p>〈类详细描述〉 </p> * 〈功能详细描述〉 * @date 2017/5/12 * @time 10:40 * @version 1.0 */public class AES { public static final String CHAR_ENCODING = "UTF-8"; public static final String AES_ALGORITHM = "AES/ECB/PKCS5Padding"; public static byte[] encrypt(byte[] data, byte[] key) { if(key.length!=16){ throw new RuntimeException("Invalid AES key length (must be 16 bytes)"); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat,"AES"); Cipher cipher = Cipher.getInstance(AES_ALGORITHM);// 创建密码器 cipher.init(Cipher.ENCRYPT_MODE, seckey);// 初始化 byte[] result = cipher.doFinal(data); return result;// 加密 } catch (Exception e){ throw new RuntimeException("encrypt fail!", e); } } /** * 解密 * * @param / content * 待解密内容 * @param /password * 解密密钥 * @return */ public static byte[] decrypt(byte[] data, byte[] key) { if(key.length!=16){ throw new RuntimeException("Invalid AES key length (must be 16 bytes)"); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance(AES_ALGORITHM);// 创建密码器 cipher.init(Cipher.DECRYPT_MODE, seckey);// 初始化 byte[] result = cipher.doFinal(data); return result; // 加密 } catch (Exception e){ throw new RuntimeException("decrypt fail!", e); } } public static String encryptToBase64(String data, String key){ try { byte[] valueByte = encrypt(data.getBytes(CHAR_ENCODING), key.getBytes(CHAR_ENCODING)); return new String(Base64.encodeBase64(valueByte,false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException("encrypt fail!", e); } } public static String decryptFromBase64(String data, String key){ try { byte[] originalData = Base64.decodeBase64(data.getBytes()); byte[] valueByte = decrypt(originalData, key.getBytes(CHAR_ENCODING)); return new String(valueByte, CHAR_ENCODING); } catch (UnsupportedEncodingException e) { throw new RuntimeException("decrypt fail!", e); } } public static void main(String[] args) throws UnsupportedEncodingException { String key = "0123456789012345"; String s = "sadkamkmk4584515"; //byte [] a = key.getBytes("UTF-8"); //System.out.println(a.length); String s2 = "fOz76GnwQ7cG76QrPj+7+pY6IW0XmaHp0VutFEQSbyk="; String r = encryptToBase64(s,key); String j = decryptFromBase64(s2,key); System.out.println(r); System.out.println(j); }}
阅读全文
1 0
- Java实现AES加密解密
- java实现AES加密解密
- AES加密解密->java实现
- Java实现AES加密解密
- java实现AES加密解密
- Java实现AES加密解密
- java加密解密AES实现
- AES加密解密算法的Java实现
- JAVA实现AES加密和解密
- java和js实现aes加密解密
- AES 加密解密的 JAVA 实现 【二】
- Java实现AES加密和解密
- AES加密解密算法Java实现
- java和js实现aes加密解密
- java和js实现aes加密解密
- Java实现AES加密和解密
- 加密解密。(aes, java)
- java,AES加密,解密
- 前嗅ForeSpider采集大众点评数据教程
- 线程安全
- adb查看手机设备型号、品牌、机型等信息
- java自定义注解
- js缓存变量,减少DOM操作开销
- java实现AES加密解密
- Apache Kafka0.10.0.0集群部署
- EXE和SYS通信(ReadFile WriteFile DO_BUFFERED_IO) 缓冲区方式
- Spring 在静态工具类中使用注解注入bean
- MYSQL数据库 的 decimal 字段类型
- ios 删除按钮不显示
- Elasticsearch 版本控制
- 用外部表(ORACLE_DATAPUMP)导出数据到文件再导入实验
- iBatis配置文件讲解