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. cpp中sizeof与指针
  2. linux终端定时器实验报告,定时器实验报告.doc
  3. 【opencv】5.cv::findContours和cv::drawContours()
  4. oracle 数据语句优化,oracle 查询语句优化录
  5. c++语言 自己构造函数 成员对象构造函数 调用顺序,C++类成员构造函数和析构函数顺序示例详细讲解...
  6. RocketMQ如何解决分布式事务
  7. java 无开发环境时在记事本中编写的方法与命令行运行java代码
  8. Ubuntu 下安装VNC server
  9. 特斯拉中国工厂2020投产,还可能为完全自动驾驶更新硬件
  10. 使用MyEclipse快速开发图形化界面
  11. UVA11192 Group Reverse【水题】
  12. NVivo 12 Mac的大规模部署
  13. js 微信小程序根据身份证号计算年龄
  14. JQuery中$(document)是什么意思?
  15. 每天学命令deleteRow
  16. 已解决:ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error
  17. python如何模拟键盘输入_Python模拟键盘输入和鼠标操作
  18. 游戏开发学习路线图(2023最新版)建议收藏
  19. WLAN没有有效的IP配置,无Internet安全(开放)
  20. 亚马逊AWS Kinesis Video Streams with KVS demo示例

热门文章

  1. Win命令窗口设置中文chcp
  2. Hbase读写数据过程详解(hbase0.96版本之前与hbase0.96版本之后对比)
  3. 使用Navicat进行ssh通道连接mysql数据库操作详解
  4. 字符串的常见方法总结:
  5. Android 欢迎动画
  6. 学习记录:py3百度翻译接口
  7. 在成都的哪个培训机构学习Java好呢?
  8. Wordpress或discuz安装异次元分享工具条
  9. Windows 如何卸载 Docker
  10. Json 格式的接口测试该怎么做?