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对称加密相关推荐

  1. AES对称加密和解密算法以及Java的AES工具类

    参考资料:百度百科[高级加密标准] AES简介 1.密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块 ...

  2. 3、【java数据安全】对称加密的5种(DES/3DES、AES、IDEA、PBE)常见算法的使用示例

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  3. RSA加密及AES对称加密代码实现

    最近老师布置了两个加密的作业,记录一下编码过程及遇到的问题. 对于RSA解密基本内容这里就不赘述,直接说一下编码过程把: 1:N = p*q(p.q互质,即公约数只有1)可以用辗转相除去判断 2:L是 ...

  4. RSA(非对称)+AES(对称加密)前后台交互

    前言:    为了提高安全性采用了RSA,但是为了解决RSA加解密性能问题,所以采用了RSA(非对称)+AES(对称加密)方式,如果只考虑其中一种的,可以去看我前面两篇文章,专门单独写的demo,可以 ...

  5. 正确使用AES对称加密

    正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ...

  6. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Enc ...

  7. Python代码实现MD5、AES对称加密和RSA非对称加密以及OpenSSl实践

    1.MD5加密算法 1.1 MD5加密的特点 不可逆运算 对不同的数据加密的结果是定长的32位和16位字符(不管文件多大都一样) 对相同的数据加密,得到的结果是一样的(也就是复制). 抗修改性 :信息 ...

  8. Android+Java中使用Aes对称加密的工具类与使用

    场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...

  9. Java安全之对称加密、非对称加密、数字签名

    Java中加密分为两种方式一个是对称加密,另一个是非对称加密.对称加密是因为加密和解密的钥匙相同,而非对称加密是加密和解密的钥匙不同. 对称加密与非对称加密的区别: 对称加密称为密钥加密,速度快,但加 ...

最新文章

  1. 为什么需要系统程序员来构建云和IT自动化基础
  2. Net平台下的分布式缓存设计
  3. 第十一届蓝桥杯大赛青少组 Python 真题 - 第二题
  4. 和大家分享一个小TIP
  5. 河南彩民中奖3亿5千万
  6. 今天,我种下了一朵小蓝花
  7. c mysql 取错误信息_初始化 MYSQL 后为何得到一会错误信息?
  8. 发那科程序全部输出_走,去看看发那科机器人全新的自动化解决方案!
  9. CCF201412-2 Z字形扫描(100分)
  10. mysql 存储过程 out list_MySQL存储过程中的IN,OUT,INOUT类型 用法
  11. hbase 源代码解析(2)HAdmin 的表创建过程
  12. Tomcat6 如何彻底卸载,才干净?
  13. C#之Chart控件使用
  14. 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
  15. 忆贵州三年的教书编程岁月:不弛于空想,不骛于虚声
  16. linux修改ip地址详解
  17. loadrunner中关联到的信息需要拼接时的例子-订飞机票
  18. 软件开发工具下载地址
  19. WZOI-285叠方块游戏
  20. 开源项目——寝室助手

热门文章

  1. Linux运维常用的150条命令
  2. 【NOIP模拟】Angel Beats!
  3. 推荐3款超可爱,充满少女心的软件给你
  4. 国产手机:2022疑无路,2023又一村?
  5. 实景三维浪潮翻涌,新技术“席卷”石家庄!
  6. java中去除数组中重复元素的方法
  7. 普通帐户更改root权限
  8. 栈的应用-算数表达式求值
  9. 探索“AI+算力”:加速创新与增长的无限潜力
  10. 腾讯丁珂:开放安全中台能力,让产业安全举重若轻