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的更多相关文章

  1. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  2. Java 前端加密传输后端解密以及验证码功能

    目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...

  3. C# 实现 JAVA AES加密解密[原创]

    以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收J ...

  4. C#与Java同步加密解密DES算法

    在实际项目中,往往前端和后端使用不同的语言.比如使用C#开发客户端,使用Java开发服务器端.有时出于安全性考虑需要将字符加密传输后,由服务器解密获取.本文介绍一种采用DES算法的C#与Java同步加 ...

  5. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

  6. 【转】 java RSA加密解密实现

    [转] java RSA加密解密实现 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detai ...

  7. (转)java源程序加密解决方案(基于Classloader解密)

    转:http://cjnetwork.iteye.com/blog/851544 源程序加密解决方案 1. 概述: Java源程序的加密,有如下两种: 1使用混淆器对源码进行混淆,降低反编译工具的作用 ...

  8. js和java MD5加密

    项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...

  9. PHP、Java对称加密中的AES加密方法

    PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...

  10. Java Base64加密、解密原理Java代码

    Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...

随机推荐

  1. 全面jmeter逻辑控制器案例详解

    逻辑控制器作用: (1)控制测试计划或者线程组中节点的逻辑执行顺序. (2)对测试计划或者线程组中的脚本进行分组.方便jmeter统计执行结果以及脚本运行时的控制等.jmeter中逻辑控制器(Logi ...

  2. git+jenkins+ansible+gitlab部署网站

  3. PHP-循环文件夹-yield-生成器

    <?php define(DS, DIRECTORY_SEPARATOR); function gen_dir($path='.'){ $c_dir = opendir($path); whil ...

  4. Install Argo Workflows

    Install Argo Workflows Release v3.4.3 · argoproj/argo-workflows (github.com) CLI # Download the bina ...

  5. 关于webpack 开启代理proxy后,接口看不到代理地址的问题。

    今天在项目中发现, 明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx.这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改.这 ...

  6. this指向问题大全和call,apply,bind详解

    详细笔记链接:https://www.jianshu.com/p/bc541afad6ee 函数内外作用域问题: var a = 1function f1(){ var a = 2 console.l ...

  7. rust 配置国内源,加速

    [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" # 指定镜像 replac ...

  8. Wahahahehehe 随笔归档

    [连载教程类] <RISC-V MCU 原理与应用> 1. 计算机理论模型--图灵机 2. 从图灵机到计算机 3. MCU构成及其运行原理 <RISC-V MCU 开发那些事> ...

  9. RabbitMQ 修改密码

    C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\sbin> rabbitmqctl.bat change_password adm ...

  10. spark之依赖关系

    spark的每个RDD都会记录从创建到当前算子的依赖(血缘关系),当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区 ---  toDebugString 方法查看 On ...