Java 实现AES对称加密
AES介绍
高级加密标准(AES,Advanced Encryption Standard)是日常使用频率比较高的的对称加密算法。尤其是在网络通信中使用较为广泛,具体的加密流程下图:
废话不多说,直接上工具代码:
@Log4j2
public class AESUtil {private static final String KEY_ALGORITHM = "AES";//默认的加密算法private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";/*** AES 加密操作** @param content 待加密内容* @param key 加密密钥* @return 返回Base64转码后的加密数据*/public static String encrypt(String content, String key) {try {Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);byte[] byteContent = content.getBytes(Charsets.UTF_8);// 初始化为加密模式的密码器cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));// 加密byte[] result = cipher.doFinal(byteContent);//通过Base64转码返回return new String(Base64Util.encode(result),Charsets.UTF_8);} catch (Exception ex) {log.error("加密异常{}",ex.getMessage());}return null;}/*** AES 解密操作** @param content 待解密数据* @param key 秘钥* @return 返回数据明文*/public static String decrypt(String content, String key) {try {//实例化Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);//使用密钥初始化,设置为解密模式cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));byte[] biMi = FuncUtil.B64de(content);//执行操作byte[] result = cipher.doFinal(biMi);return new String(result, "utf-8");} catch (Exception ex) {log.error("加密异常{}",ex.getMessage());}return null;}/*** 生成加密秘钥*/private static SecretKeySpec getSecretKey(final String key) {//返回生成指定算法密钥生成器的 KeyGenerator 对象KeyGenerator kg = null;try {kg = KeyGenerator.getInstance(KEY_ALGORITHM);//AES 要求密钥长度为 128SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG") ;secureRandom.setSeed(key.getBytes(Charsets.UTF_8));kg.init(128, secureRandom);//生成一个密钥SecretKey secretKey = kg.generateKey();// 转换为AES专用密钥return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);} catch (NoSuchAlgorithmException ex) {log.error("加密异常{}",ex.getMessage());}return null;}}
Java 实现AES对称加密相关推荐
- AES对称加密和解密算法以及Java的AES工具类
参考资料:百度百科[高级加密标准] AES简介 1.密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块 ...
- 3、【java数据安全】对称加密的5种(DES/3DES、AES、IDEA、PBE)常见算法的使用示例
java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...
- RSA加密及AES对称加密代码实现
最近老师布置了两个加密的作业,记录一下编码过程及遇到的问题. 对于RSA解密基本内容这里就不赘述,直接说一下编码过程把: 1:N = p*q(p.q互质,即公约数只有1)可以用辗转相除去判断 2:L是 ...
- RSA(非对称)+AES(对称加密)前后台交互
前言: 为了提高安全性采用了RSA,但是为了解决RSA加解密性能问题,所以采用了RSA(非对称)+AES(对称加密)方式,如果只考虑其中一种的,可以去看我前面两篇文章,专门单独写的demo,可以 ...
- 正确使用AES对称加密
正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ...
- 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密
注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp] view plain copy print ? /* * * * 文件名称:Enc ...
- Python代码实现MD5、AES对称加密和RSA非对称加密以及OpenSSl实践
1.MD5加密算法 1.1 MD5加密的特点 不可逆运算 对不同的数据加密的结果是定长的32位和16位字符(不管文件多大都一样) 对相同的数据加密,得到的结果是一样的(也就是复制). 抗修改性 :信息 ...
- Android+Java中使用Aes对称加密的工具类与使用
场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...
- Java安全之对称加密、非对称加密、数字签名
Java中加密分为两种方式一个是对称加密,另一个是非对称加密.对称加密是因为加密和解密的钥匙相同,而非对称加密是加密和解密的钥匙不同. 对称加密与非对称加密的区别: 对称加密称为密钥加密,速度快,但加 ...
最新文章
- 为什么需要系统程序员来构建云和IT自动化基础
- Net平台下的分布式缓存设计
- 第十一届蓝桥杯大赛青少组 Python 真题 - 第二题
- 和大家分享一个小TIP
- 河南彩民中奖3亿5千万
- 今天,我种下了一朵小蓝花
- c mysql 取错误信息_初始化 MYSQL 后为何得到一会错误信息?
- 发那科程序全部输出_走,去看看发那科机器人全新的自动化解决方案!
- CCF201412-2 Z字形扫描(100分)
- mysql 存储过程 out list_MySQL存储过程中的IN,OUT,INOUT类型 用法
- hbase 源代码解析(2)HAdmin 的表创建过程
- Tomcat6 如何彻底卸载,才干净?
- C#之Chart控件使用
- 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
- 忆贵州三年的教书编程岁月:不弛于空想,不骛于虚声
- linux修改ip地址详解
- loadrunner中关联到的信息需要拼接时的例子-订飞机票
- 软件开发工具下载地址
- WZOI-285叠方块游戏
- 开源项目——寝室助手