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是 ...
随机推荐
- CTF学习笔记(二)
二.常见的HTML知识 (一)rorbts协议 robots协议也称爬虫协议.爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读 ...
- zzul1058_Java
import java.util.Scanner;public class zzul1058 { public static void main(String[] args) { Scanner in ...
- elementUI中table组件前端自己实现序号排序
<el-table-column type="index" label="序号" width="50" align="cen ...
- 对SQL CTE的一点个人理解
/*执行顺序: 首先,执行按一.二,此时二输出的结果,可以理解为临时n 然后,按三.二.三.二循环执行 注意:,步骤三的where为递归终止条件,由于用的是substr函数.在最后一次递归的时候,如果 ...
- JavaScript基础知识整理(ES5创建对象)
创建对象 我们开始可以用Object构造函数或者对象字面量来快速创建对象,但使用这种方式创建多个对象时会产生大量重复代码,所以我们有了以下几种创建对象的方式. (1)工厂模式 function cre ...
- windows server 2012以上版本离线安装 net framework3.5 方法
方法1. 通过服务管理器安装操作系统原镜像文件 准备windows系统镜像文件,解压windows server.iso文件到 D:\WindowsOS 在服务器管理器上添加.NET Framewor ...
- WPF检测设备变化
如果在构造函数中设置会出现为空 HwndSource source = PresentationSource.FromVisual(this) as HwndSource; 此时 source = n ...
- 21_webpack_DDL
DLL库(不再使用) DLL全称是动态链接库(Dynamic Link Library),是为软件在Windows中实现共享函数库的一种实现方式 webpack中也有内置DLL的功能,它指的是我们可以 ...
- openssl的自签名证书不被信任问题
1.不同的浏览器安全策略不同 1.1谷歌系的会提示没有绑定域名. 此服务器无法证实它就是 192.168.0.127 - 它的安全证书没有指定主题备用名称(Subject Alternative Na ...
- Filter Pattern 2 (dubbo的实现方式)
前一篇FilterPattern的范式,基本和Tomcat实现的filter chain是一样的: 这里介绍一下我看完dubbo关于Filter Pattern的实现思路,自己抽象出来的代码,以及理解 ...