AES 加密和解密工具类
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.log
千家信息网最后更新 2025年01月31日AES 加密和解密工具类
import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.logging.Level;import java.util.logging.Logger;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;/** * @version V1.0 * @desc AES 加密工具类 */public class AESUtils { private static final String KEY_ALGORITHM = "AES"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法 private static final String PASSWORD_KEY = "123456";//解密秘钥 /** * AES 加密操作 * * @param content 待加密内容 * @param password 加密密码 * @return 返回Base64转码后的加密数据 */ public static String encrypt(String content) { try { Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(PASSWORD_KEY));// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return Base64.encodeBase64String(result);//通过Base64转码返回 } catch (Exception ex) { Logger.getLogger(AESUtils.class.getName()).log(Level.SEVERE, null, ex); } return null; } /** * AES 解密操作 * * @param content * @param password * @return */ public static String decrypt(String content) { try { //实例化 Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); //使用密钥初始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, getSecretKey(PASSWORD_KEY)); //执行操作 byte[] result = cipher.doFinal(Base64.decodeBase64(content)); return new String(result, "utf-8"); } catch (Exception ex) { Logger.getLogger(AESUtils.class.getName()).log(Level.SEVERE, null, ex); } return null; } /** * 生成加密秘钥 * * @return */ private static SecretKeySpec getSecretKey(final String password) { //返回生成指定算法密钥生成器的 KeyGenerator 对象 KeyGenerator kg = null; try { kg = KeyGenerator.getInstance(KEY_ALGORITHM); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" ); secureRandom.setSeed(password.getBytes()); //AES 要求密钥长度为 128 kg.init(128, secureRandom); //生成一个密钥 SecretKey secretKey = kg.generateKey(); return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);// 转换为AES专用密钥 } catch (NoSuchAlgorithmException ex) { Logger.getLogger(AESUtils.class.getName()).log(Level.SEVERE, null, ex); } return null; } public static void main(String[] args) { String s = "oFWN75fxFHQ"; System.out.println("s:" + s); String s1 = AESUtils.encrypt(s); System.out.println("s1:" + s1); System.out.println("s2:"+AESUtils.decrypt(s1)); }}
加密
密钥
生成
密码
模式
算法
utf-8
密码器
工具
内容
实例
对象
数据
生成器
长度
专用
解密工具
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
后端保证数据库安全
唐山OA软件开发招聘
英语网络安全技术学习
30岁学软件开发晚吗
太空工程师服务器架设
图文数据库软件6
cmmi5网络安全厂家
互联网科技企业裁员
贵州电力时钟监控网关服务器
软件开发和系统集成管理的共同点
2008数据库入门经典
南陵软件开发技术项目实训中心
宁波镇海区惠普机架式服务器
加强网络安全整改
网络安全有几个区域
关于网络安全科幻画
勤务管理系统连接服务器异常
网络安全培训 职位
kettle数据库查询
orcal数据库无监听程序
饥荒搭建的服务器怎么暂停
黄龙溪民宿软件开发
网络安全保障的核心是
软件开发费用单价
端口安全在服务器中的应用
项目软件开发四大特点
软件开发迭代平台
软件开发服务组织协调内容
长江大学计算机网络技术
网络安全密码创建