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是 ...
随机推荐
- snapshot备份
snapshot C: "h:\esd\$date_$hour_$minute_C.sna" -L0 -R -G snapshot64.exe C: "H:\ESD\$d ...
- [OC] 按照 元素 中的某个属性 来对数组进行排序
数组需要是 NSMutableArray 类型: //ascending - YES:升序,1,2,3 NO:降序:3,2,1 NSArray *sortDescriptors = [NSArray ...
- 莫凡Python 3
莫凡Python 3 新建模板小书匠 CNN 卷积神经网络 参考资料 https://morvanzhou.github.io/tutorials/machine-learning/keras/2-3 ...
- Jmeter学习:Jmeter函数助手
转载地址:https://www.cnblogs.com/imyalost/p/6802173.html
- java 之 UncaughtExceptionHandler异常处理机制
1.java 1.5版本出现的 UncaughtExceptionHandler 当线程由于未捕获异常突然终止时调用的处理程序的接口. 当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thre ...
- 用telnet远程连接linux系统
环境,centos7.6 通过telnet进行远程登录的方法如下: 1.安装telnet,telnet-server,xinetd 检测是否安装telnet rpm -qa | grep telnet ...
- 使用git下载文件时提示身份验证失败
鼠标右键打开Git Bash Here窗口 输入git clone + 网址 后出现身份报错提示信息 需要重新修改一下用户名和邮箱就可以了 git config --global --replace- ...
- C与C++字符串比较
#include<iostream> #include<string> using namespace std; int main() { char a[] = "a ...
- abap screen表格控件后续增加栏位
当我们通过screen的表控件(含向导)创建完表格之后,后续想再增加栏位,要先把输入控件拖入表格控件内,再按钮控控件拖进去即可. 注:输入控件的名称和格式要和程序中的一致,否则会显示不出数据 效果图如 ...
- C# DateTime转换为字符串
12小时制:DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 24小时制:DateTime.Now.ToString("yyyy- ...