java对数据加解密_java 使用AES对数据进行加密和解密
public class AESUtil {
private static String key= "123456";
/**
* 加密
* @param content待加密内容
* @param key 加密的密钥
* @return
*/
public static String encrypt(String content, String key) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");//构造密钥生成器,指定为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);//ENCRYPT_MODE指加密操作
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");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(key.getBytes());
kgen.init(128, secureRandom);
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);//Decrypt_mode指解密操作
byte[] result = cipher.doFinal(byteRresult);
return new String(result,"utf-8");//不加utf-8,中文时会乱码
} 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();
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
//重载的方法,使用默认密钥
public static String decrypt(String content) {
return decrypt(content, key);
}
public static String encrypt(String content) {
return encrypt(content, key);
}
java对数据加解密_java 使用AES对数据进行加密和解密相关推荐
- golang实现AES ECB模式的加密和解密
最近有一个需求需要在golang中实现AES ECB模式的加密和解密, 看了一下官方文档和相关资料发现golang 官方包并没有完善的实现,于是自己尝试写了一个,本文中的AES算法是基于ECB模式, ...
- Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用
目录 1.从本地Room数据库加载数据 viewmodel fragment中使用 页面 数据库相关 2.直接网络获取数据加载 3.网络访问数据到Room数据库再加载数据 自定义RemoteMedia ...
- java des加密解密_JAVA和c# 之间数据通讯时通过DES进行加密解密
c#开发前端时调用java开发的接口,需要数据加密后通讯.两边都需要同时通过DES(BASE64)进行加解密. 代码如下 c#端: 加密 public static String Encrypt(St ...
- java 类 重新加载_Java动态类加载和重新加载的详细介绍
本篇文章给大家带来的内容是关于Java动态类加载和重新加载的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Java中可以在运行时加载和重新加载类,虽然并不像我们想像中那么简 ...
- 【Java类加载机制】深入类加载器(二)自定义加密、解密类加载器
类加载器原理 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口. 类加载 ...
- python aes加密 cbc_Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda...
1.chr()函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 2.s[a:b:c] s=(1,2,3,4,5) 1>. s[a]下标访 ...
- java对文件的处理(读取,写入,复制,加密和解密)
这个文件处理的实现具备的功能有:文件读取,文件写入,文件复制,文件加密以及文件解密. 其实在平时文件加密的操作中,我们可以简单的通过修改文件的后缀名来改变文件的打开方式,也就是常说的:"一定 ...
- 数据中心密码翻译、eas用户密码的加密和解密
1.加密和解密datacenter的数据库密码 加密:com.kingdee.bos.sql.KSqlUtil.encodePassword(password); 解密: 1.管理控制台执行 deco ...
- java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...
首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...
最新文章
- SpringBoot使用AOP
- 使用 “vue-cropper“进行图片裁剪
- NURBS曲线与曲面
- 【JavaScript】提取字符串里的分数,及计算平均分并与平均分比较输出
- DQL 学习-- DQL 基本元素
- JQuery Dialog UI按钮文字国际化
- SPOJ OTOCI 动态树 LCT
- 古老的txt下传和txt上载
- 计算机科学与技术研究生课表,计算机科学与技术专业2018级研究生课程表.doc
- 工业相机像元与像素之间的关系
- 文献调研(一):基于集成学习和能耗模式分类的办公楼小时能耗预测
- 宏病毒的研究与实例分析01——基础篇
- 招聘数据采集+Hive数据分析+数据可视化
- 实测对比:2层和4层板的干扰和辐射差异
- Android Studio设置http proxy加速下载(亲测有效)
- Zxing图片识别 从相册选二维码图片解析总结
- 什么是Core Dump?
- ibm笔记本修复计算机开机按,IBM X280开机报错,按了Esc后正常解决方法
- arcgis风向_arcgis趋势分析
- 物联网开源组件安全:Node-RED白盒审计
热门文章
- Kubernetes(K8S)各种错误及解决方法
- android 原子文件,Android原子操作
- xp计算机无法远程桌面连接,XP sp3系统下远程桌面不能连接到指定计算机的解决方案...
- CentOS安装QEMU(试验成功且简单的方法)
- optifine下载_如何优化Optifine以获得流畅的Minecraft体验
- LCD显示屏的优势与缺点浅析
- C# DAL层数据库操作类SqlHelper
- 我的世界java版红石电梯_《我的世界》红石电梯建造教程
- 第一周python学习
- 李开复做客CCTV《面对面》:世界因我而不同