Java实现的AES256加密解密功能示例
发布时间 - 2026-01-10 23:10:17 点击率:次本文实例讲述了Java实现的AES256加密解密功能。分享给大家供大家参考,具体如下:

一.代码
package com.handler;
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class AES256Encryption{
public static final String KEY_ALGORITHM="AES";
public static final String CIPHER_ALGORITHM="AES/ECB/PKCS7Padding";
public static byte[] initkey() throws Exception{
//实例化密钥生成器
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM, "BC");
kg.init(256);
kg.init(128);
SecretKey secretKey=kg.generateKey();
return secretKey.getEncoded();
}
public static byte[] initRootKey() throws Exception{
return new byte[] { 0x08, 0x08, 0x04, 0x0b, 0x02, 0x0f, 0x0b, 0x0c,
0x01, 0x03, 0x09, 0x07, 0x0c, 0x03, 0x07, 0x0a, 0x04, 0x0f,
0x06, 0x0f, 0x0e, 0x09, 0x05, 0x01, 0x0a, 0x0a, 0x01, 0x09,
0x06, 0x07, 0x09, 0x0d };
}
public static Key toKey(byte[] key) throws Exception{
SecretKey secretKey=new SecretKeySpec(key,KEY_ALGORITHM);
return secretKey;
}
public static byte[] encrypt(byte[] data,byte[] key) throws Exception{
Key k=toKey(key);
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM, "BC");
cipher.init(Cipher.ENCRYPT_MODE, k);
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] data,byte[] key) throws Exception{
Key k =toKey(key);
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM, "BC");
cipher.init(Cipher.DECRYPT_MODE, k);
return cipher.doFinal(data);
}
public static void main(String[] args) throws UnsupportedEncodingException{
String str="芸sweet";
//打印原文
System.out.println("原文:"+str);
//密钥
byte[] key;
try {
//生成随机密钥
key = AES256Encryption.initkey();
//打印密钥
System.out.print("密钥:");
for(int i = 0;i
System.out.printf("%x", key[i]);
}
System.out.print("n");
//加密
byte[] data=AES256Encryption.encrypt(str.getBytes(), key);
//打印密文
System.out.print("加密后:");
for(int i = 0;i
System.out.printf("%x", data[i]);
}
System.out.print("n");
//解密密文
data=AES256Encryption.decrypt(data, key);
//打印原文
System.out.println("解密后:"+new String(data));
} catch (Exception e) {
e.printStackTrace();
}
二.注意
1.需要在工程中引入 bcprov-jdk15-133.jar
本站下载链接。
2.替换jrelibsecurity下的local_policy.jar 和 US_export_policy.jar
本站下载链接。
1)如果程序使用是系统jdk,则替换系统环境变量的jdk中jrelibsecurity下的jar包。
2)如果程序是在MyEclipse中运行,则找到MyEclipse使用的jdk(方法:在MyEclipse里面进入window->Preferences->java选项里面有一个Installed JREs的选项,点击右边会出现一个列表,里面有你现在用到的JDK版本及路径),替换该jdk中jrelibsecurity下的jar包。
可以解决:java.security.InvalidKeyException: Illegal key size or default parameters异常
三.如果密钥需要存入数据库,则需要对密钥进行base64编码,即将密钥(byte数组)通过base64编码转换成密钥(String类型);从数据库中读取密钥时,则使用base64解码,即将密钥(String类型)转换成密钥(byte数组)。详见《Java实现base64编码》
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
MD5在线加密工具:
http://tools./password/CreateMD5Password
迅雷、快车、旋风URL加密/解密工具:
http://tools./password/urlrethunder
在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools./password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools./password/sha_encode
希望本文所述对大家java程序设计有所帮助。
# Java
# AES256
# 加密解密
# Java使用AES加密和解密的实例详解
# Java AES256加密解密示例代码
# Java AES加密和解密教程
# Java AES加密解密的简单实现方法
# JAVA中AES对称加密和解密过程
# 使用Java实现加密之AES加解密
# Java实现AES加密和解密方式完整示例
# 加密工具
# 转换成
# 下载链接
# 是在
# 还可以
# 感兴趣
# 你现在
# 给大家
# 要对
# 数据库中
# 所述
# 程序设计
# 有一个
# 则需
# 讲述了
# BC
# init
# kg
# getInstance
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京企业网站设计制作公司,北京铁路集团官方网站?
HTML 中动态设置元素 name 属性的正确语法详解
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
西安专业网站制作公司有哪些,陕西省建行官方网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
历史网站制作软件,华为如何找回被删除的网站?
如何在阿里云虚拟主机上快速搭建个人网站?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
如何基于PHP生成高效IDC网络公司建站源码?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何注册花生壳免费域名并搭建个人网站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
实例解析Array和String方法
iOS验证手机号的正则表达式
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
,怎么在广州志愿者网站注册?
如何用低价快速搭建高质量网站?
如何在香港免费服务器上快速搭建网站?
javascript日期怎么处理_如何格式化输出
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel定时任务怎么设置_Laravel Crontab调度器配置
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何使用withoutEvents方法临时禁用模型事件
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何在云主机快速搭建网站站点?
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
进行网站优化必须要坚持的四大原则
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
jQuery validate插件功能与用法详解
如何正确选择百度移动适配建站域名?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
在centOS 7安装mysql 5.7的详细教程
详解vue.js组件化开发实践
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
网站制作价目表怎么做,珍爱网婚介费用多少?
高防服务器如何保障网站安全无虞?

