java使用Hex编码解码实现Aes加密解密功能示例
发布时间 - 2026-01-10 22:19:40 点击率:次本文实例讲述了java使用Hex编码解码实现Aes加密解密功能。分享给大家供大家参考,具体如下:

这里的Aes加密解密方法使用Hex进行了编码解码
package com.baidu.wallet.bdwallet.utils;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
public class Test {
private static final String AES="AES";
private static final String UTF8="UTF-8";
/**
* AES加密
* @param content
* @param pkey
* @return
* @throws DecoderException
*/
private static byte[] encrypt(String content, String pkey) throws DecoderException {
try {
String private_key=pkey;
byte[] encodeFormat=null;
try {
//秘钥 Hex解码为什么秘钥要进行解码,因为秘钥是某个秘钥明文进行了Hex编码后的值,所以在使用的时候要进行解码
encodeFormat = Hex.decodeHex(private_key.toCharArray());
} catch (DecoderException e) {
e.printStackTrace();
}
SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
// 加密内容进行编码
byte[] byteContent = content.getBytes(UTF8);
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, key);
// 正式执行加密操作
byte[] result = cipher.doFinal(byteContent);
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
/**
* AES解密
* @param contents
* @param password
* @return
* @throws DecoderException
*/
private static byte[] decrypt(String contents, String password) throws DecoderException {
try {
//密文使用Hex解码
byte[]content = Hex.decodeHex(contents.toCharArray());
//秘钥 Hex解码为什么秘钥要进行解码,因为秘钥是某个秘钥明文进行了Hex编码后的值,所以在使用的时候要进行解码
byte[] encodeFormat = Hex.decodeHex(password.toCharArray());
SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(AES);
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, key);
// 正式执行解密操作
byte[] result = cipher.doFinal(content);
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
/**
* Aes加密
* @param context 明文
* @param private_key 秘钥
* @return
* @throws DecoderException
*/
public static String encryption(String context,String private_key) throws DecoderException{
//加密后的明文也就变成了密文
byte[] encryptResult = encrypt(context, private_key);
//密码文Hex编码
String encryptResultStr = Hex.encodeHexString(encryptResult);
return encryptResultStr;
}
/**
* Aes解密
* @param context 密文
* @param private_key 秘钥
* @return
* @throws DecoderException
* @throws UnsupportedEncodingException
*/
public static String decryption(String context,String private_key) throws DecoderException, UnsupportedEncodingException{
//这里的密文解密前先进行了Hex解码
byte[] decryptResult = decrypt(context, private_key);
String result = new String(decryptResult, UTF8);
return result;
}
public static void main(String[] args) throws UnsupportedEncodingException, DecoderException {
//加密内容
String content = "123456787654321";
//AES加密解密秘钥
String password = "这个值一般都是给定的,双发都知道";
// 加密
System.out.println("加密前:" + content);
// 调用加密方法
String encryptResultStr = encryption(content, password);
System.out.println("加密后:" + encryptResultStr);
// 调用解密方法
String result = decryption(encryptResultStr, password);
// 解密内容进行解码
System.out.println("解密后:" + result);
}
}
这个方法在正式的项目中已经在使用木有问题,注意这里的AES加密解密你要要对哦……
上面使用的就是org.apache.commons.codec.binary.Hex这个类的方法,在maven中配置如下:
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.4</version> </dependency>
注意:这里要使用1.4以及以上版本,应为1.4以下的没有Hex.encodeHexString(byte[])这个方法!
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
密码安全性在线检测:
http://tools./password/my_password_safe
高强度密码生成器:
http://tools./password/CreateStrongPassword
迅雷、快车、旋风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
# Hex
# 编码
# 解码
# Aes
# 加密
# 解密
# Java AES256加密解密示例代码
# java使用RSA与AES加密解密的实例代码详解
# Java使用Hutool实现AES、DES加密解密的方法
# Java使用AES加密和解密的实例详解
# Java AES加密解密的简单实现方法
# Java与Node.js利用AES加密解密出相同结果的方法示例
# Java实现的AES256加密解密功能示例
# java基于AES对称加密算法实现的加密与解密功能示例
# Android、iOS和Java通用的AES128加密解密示例代码
# JAVA中AES对称加密和解密过程
# Java AES加密和解密教程
# 加密解密
# 进行了
# 加密工具
# 都是
# 还可以
# 也就
# 你要
# 感兴趣
# 给大家
# 要对
# 所述
# 要使
# 程序设计
# 高强度
# 前先
# 变成了
# 讲述了
# UTF
# String
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在腾讯云服务器上快速搭建个人网站?
南京网站制作费用,南京远驱官方网站?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何快速搭建虚拟主机网站?新手必看指南
Python文本处理实践_日志清洗解析【指导】
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
HTML 中动态设置元素 name 属性的正确语法详解
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
深圳网站制作的公司有哪些,dido官方网站?
JavaScript Ajax实现异步通信
如何在阿里云高效完成企业建站全流程?
轻松掌握MySQL函数中的last_insert_id()
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
音乐网站服务器如何优化API响应速度?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何快速查询网址的建站时间与历史轨迹?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何在IIS中新建站点并解决端口绑定冲突?
昵图网官方站入口 昵图网素材图库官网入口
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
如何挑选最适合建站的高性能VPS主机?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
动图在线制作网站有哪些,滑动动图图集怎么做?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
BootStrap整体框架之基础布局组件
JS弹性运动实现方法分析
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
IOS倒计时设置UIButton标题title的抖动问题
Swift中switch语句区间和元组模式匹配
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel如何使用.env文件管理环境变量?(最佳实践)
在线制作视频网站免费,都有哪些好的动漫网站?
Android okhttputils现在进度显示实例代码
详解CentOS6.5 安装 MySQL5.1.71的方法
长沙做网站要多少钱,长沙国安网络怎么样?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
PHP 500报错的快速解决方法

