Java-AES256加密Util
1 public class AES256Util {
2
3 /**
4 * 密钥, 256位32个字节
5 */
6 public static final String DEFAULT_SECRET_KEY = "uBdUx82vPHkDKb284d7NkjFoNcKWBuka";
7
8 private static final String AES = "AES";
9
10 /**
11 * 初始向量IV, 初始向量IV的长度规定为128位16个字节, 初始向量的来源为随机生成.
12 */
13 private static final byte[] KEY_VI = "c558Gq0YQK2QUlMc".getBytes();
14
15 /**
16 * 加密解密算法/加密模式/填充方式
17 */
18 private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
19
20 private static java.util.Base64.Encoder base64Encoder = java.util.Base64.getEncoder();
21 private static java.util.Base64.Decoder base64Decoder = java.util.Base64.getDecoder();
22
23 static {
24 java.security.Security.setProperty("crypto.policy", "unlimited");
25 }
26
27 /**
28 * AES加密
29 */
30 public static String encode(String key, String content) {
31 try {
32 javax.crypto.SecretKey secretKey = new javax.crypto.spec.SecretKeySpec(key.getBytes(), AES);
33 javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance(CIPHER_ALGORITHM);
34 cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, secretKey, new javax.crypto.spec.IvParameterSpec(KEY_VI));
35
36 // 获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码
37 byte[] byteEncode = content.getBytes(java.nio.charset.StandardCharsets.UTF_8);
38
39 // 根据密码器的初始化方式加密
40 byte[] byteAES = cipher.doFinal(byteEncode);
41
42 // 将加密后的数据转换为字符串
43 return base64Encoder.encodeToString(byteAES);
44 } catch (Exception e) {
45 e.printStackTrace();
46 }
47 return null;
48 }
49
50 /**
51 * AES解密
52 */
53 public static String decode(String key, String content) {
54 try {
55 javax.crypto.SecretKey secretKey = new javax.crypto.spec.SecretKeySpec(key.getBytes(), AES);
56 javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance(CIPHER_ALGORITHM);
57 cipher.init(javax.crypto.Cipher.DECRYPT_MODE, secretKey, new javax.crypto.spec.IvParameterSpec(KEY_VI));
58
59 // 将加密并编码后的内容解码成字节数组
60 byte[] byteContent = base64Decoder.decode(content);
61 // 解密
62 byte[] byteDecode = cipher.doFinal(byteContent);
63 return new String(byteDecode, java.nio.charset.StandardCharsets.UTF_8);
64 } catch (Exception e) {
65 e.printStackTrace();
66 }
67 return null;
68 }
69
70 public static void main(String[] args) {
71 String dbPassword = "123456";
72 String encryptDbPwd = AES256Util.encode(DEFAULT_SECRET_KEY, dbPassword);
73 System.out.println("encrypt: " + encryptDbPwd);
74
75 String decrypt = AES256Util.decode(DEFAULT_SECRET_KEY, encryptDbPwd);
76 System.out.println("decrypt:" + decrypt);
77 }
78
79 }
Java-AES256加密Util的更多相关文章
- bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能
xmlrpc . https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...
- Java 前端加密传输后端解密以及验证码功能
目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...
- C# 实现 JAVA AES加密解密[原创]
以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收J ...
- C#与Java同步加密解密DES算法
在实际项目中,往往前端和后端使用不同的语言.比如使用C#开发客户端,使用Java开发服务器端.有时出于安全性考虑需要将字符加密传输后,由服务器解密获取.本文介绍一种采用DES算法的C#与Java同步加 ...
- Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...
- 【转】 java RSA加密解密实现
[转] java RSA加密解密实现 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detai ...
- (转)java源程序加密解决方案(基于Classloader解密)
转:http://cjnetwork.iteye.com/blog/851544 源程序加密解决方案 1. 概述: Java源程序的加密,有如下两种: 1使用混淆器对源码进行混淆,降低反编译工具的作用 ...
- js和java MD5加密
项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...
- PHP、Java对称加密中的AES加密方法
PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...
- Java Base64加密、解密原理Java代码
Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...
随机推荐
- JavaScript&TypeScript学习总结
目录 一.JavaScript学习总结 1.什么是JavaScript 2.变量 3.变量命名 4.操作符 5.遍历语句 6.函数 7.对象 8.数组 二.TypeScript学习总结 1.什么是Ty ...
- C#封装FluentValidation
FluentValidation是一个非常强大的用于构建强类型验证规则的 .NET 框架,帮程序员解决了繁琐的校验问题,用起来非常爽,但我还是遇到了一件非常不爽的事情,如下代码所示: public c ...
- Docker技术知识点总纲
基本介绍的安装使用 1.Docker简要介绍 2.windows下Docker的安装 3.CentOS下Docker的安装 快速入门与常用操作 4.Docker引擎升级与存储驱动的升级 5.Docke ...
- 一些sql查询的case
1.单列去重,输出去重后条目数量 select count(distinct(`id`)) from student; 2.根据分数段统计数据条目:利用case when selectcount(ca ...
- 软件架构易用性在软件UI中的体现
软件架构易用性在软件UI中的体现 贾硕航 (石家庄铁道大学,河北省石家庄市,050000) 摘要:易用性(usability)是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使 ...
- vbox批量管理工具 VirtualBox硬件级虚拟机大众网络版v2019/v2020/v2021 免费版下载地址
浪潮vbox批量管理器-基础网络版 大众版 免费版 免激活码 免注册码 V2021下载地址: https://d1.crsky.com/software2/20210107/VBoxMgr_v2 ...
- Autojs页面开发
概述: Autojs功能很强大! 可以打包成apk文件装在手机里运行,也可以做页面UI级别的开发.本文主要对基础页面开发常用方法.demo.资料做收集, 属于比较基础的文章.大佬请略过....... ...
- how to make the windows console works with utf-8 encoded project
the console of the windows os is not working in the utf-8 encoding, by default. When you force your ...
- C# VS2019修改工程名
1.修改解决方案的名称:选择解决方案的名称,右键重命名即可 2.修改项目名称,方法同上,不再赘述 3.修改项目的程序集名称和默认命名空间:选择项目,右键属性,弹出如下对话框 4.替换项目或解决方案中的 ...
- 读后笔记 -- Python 全栈测试开发 Chapter8:接口测试
8.1 接口测试 1. 市场分布 UI(web.app)自动化:10% 接口自动化:20% 单元测试:70% -- 测开 2. 接口类型: 1)结构划分:模块间(系统间)的接口称为内部接口:系统与第三 ...