AES加密模式有ECB,CBC,CTR等

AES填充模式有pkcs5padding, pkcs7padding, no padding等

AES数据块则有128位 192位 256位

AES加密密码,如果选择数据块128位,则要求密码长度为16,数据块192位则要求密码长度为24,数据块长度为256位,则要求密码长度为32

AES的偏移量和AES加密类似

AES输出则有base64和hex两种

AES字符集有gb2312,gbk,utf-8等

1 使用CBC+PKCS5Padding+base64+utf-8 做加密解密,代码如下

     /***加密操作* @param content  待加密内容* @param encodingFormat 编码方式* @param sKey 密码* @param ivParameter 偏移量* @return* @throws Exception*/public String encrypt(String content, String encodingFormat, String sKey, String ivParameter) {try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");byte[] raw = sKey.getBytes();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);byte[] encrypted = cipher.doFinal(content.getBytes(encodingFormat));return Base64Utils.encodeBase64String(encrypted);}catch (Exception e){log.error("data {} encrypt on error {}",content,e);}return null;}/***解密操作* @param content 待解密内容* @param encodingFormat 编码方式* @param sKey 密码* @param ivParameter 偏移量* @return* @throws Exception*/public String decrypt(String content, String encodingFormat, String sKey, String ivParameter) {try {byte[] raw = sKey.getBytes("ASCII");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);byte[] encrypted1 = Base64Utils.decodeBase64(content);byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original, encodingFormat);return originalString;} catch (Exception ex) {log.error("data {} decrypt on error {}",content,e);}return null;}

2 使用CBC+no padding+hex+utf-8 做加密解密,代码如下

注意:此方式加密或者解密内容字节长度必须为16的整数倍,否则会报错

     /***加密操作* @param content  待加密内容* @param encodingFormat 编码方式* @param sKey 密码* @param ivParameter 偏移量* @return* @throws Exception*/public String encrypt(String content, String encodingFormat, String sKey, String ivParameter) {try {byte[] raw = sKey.getBytes();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/CBC/nopadding");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);while (content.getBytes(encodingFormat).length % 16 != 0){content+=" ";}byte[] encrypted = cipher.doFinal(content.getBytes(encodingFormat));return Hex.encodeHexString(encrypted).toUpperCase(Locale.ROOT);}catch (Exception e){log.error("data {} decrtpy on error {}",content,e);}return null;}/***解密操作* @param content 待解密内容* @param encodingFormat 编码方式* @param sKey 密码* @param ivParameter 偏移量* @return* @throws Exception*/public String decrypt(String content, String encodingFormat, String sKey, String ivParameter) {try {byte[] raw = sKey.getBytes("ASCII");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/CBC/nopadding");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);byte[] bytes = Hex.decodeHex(content);byte[] original = cipher.doFinal(bytes);String originalString = new String(original, encodingFormat);return originalString;} catch (Exception ex) {log.error("data {} decrtpy on error {}",content,ex);}return null;}

JAVA 实现AES加密解密相关推荐

  1. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  2. ios java aes_PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密

    **PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式 ...

  3. Java使用AES加密解密

    AES加密机制: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用来替代原先的 ...

  4. java android aes加密解密_AES加密解密在JAVA和ANDROID下互通

    昨天外包安卓的那个人说AES的加解密结果不一样.于是百度搜索发现还真是! 贴上AES加密核心: Cipher cipher = Cipher.getInstance("AES/CBC/PKC ...

  5. java aes加密 base64_【java】AES加密解密|及Base64的使用

    AES加解密算法,使用Base64做转码以及辅助加密: package com.wintv.common; import javax.crypto.Cipher; import javax.crypt ...

  6. java实现AES加密解密

    public class PartnerSign {private PartnerSign() {}/*** AES加密方法** @param content 明文内容* @param passwor ...

  7. CryptoJS、Java中aes加密解密

    前台 加密 // 16进制密文 function aesHexCryptoAesEncryption(word) {if (typeof (word) === 'object') { // 对象格式的 ...

  8. aes加密算法python语言实现_C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]...

    原文:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php c#里面的AES加密 ...

  9. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  10. java AES加密解密

    近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一:AES可以使用128.192.和256位密钥,并且用128位 ...

最新文章

  1. win10突然打开matlab闪退,win10上的应用打开会闪退,直接闪退
  2. 【BZOJ4821】【SDOI2017】相关分析 [线段树]
  3. 煮茶社区AVR开发板第二版[转]
  4. Python-复习-习题-13
  5. java metapojo_hibernate错误[org.hibernate.tuple.entity.PojoEntityTuplizer],这是什么错误,怎么解决?...
  6. ASP.NET MVC4中的异步控制器
  7. Silverlight 3正式版新鲜出炉
  8. python framework jdon_python – Django Rest Framework和JSONField
  9. CocosCreator编辑器界面
  10. android获取截屏图片大小,【Android】android获取长图截屏(显示之外的也要)
  11. 统一建模语言UML概述
  12. [UPF]理解UPF功率域和域边界
  13. CWE-123: Write-what-where Condition(任意写入)
  14. python 离散数学 判断单射 双射 满射
  15. C语言候老师,两本留言册背后的C语言老师
  16. 使用Android Studio 开发地图案例之二(展示普通图、卫星图、交通流量图和百度城市热力图)
  17. snubber电路总结
  18. 4月11日 星期六
  19. 【Hardware】【磁保持继电器基础知识】
  20. 强化学习之CartPole游戏(Q-learning)

热门文章

  1. mp-mtgsig 美团iOS 签名逆向工程分析
  2. uni-app 使用蓝牙打印机ESC/POS指令基础方法
  3. android 看电脑视频,超级看电脑在线观看方法教程详解_丝瓜视频安卓版
  4. —— GPS测量原理及应用复习-7 ——
  5. Linux下ps -ef和ps aux
  6. java 注解 controller_@Controller注解
  7. Carthagecocopads 摘抄笔记
  8. 会使您势不可挡的程序员的行为
  9. php301劫持,黑帽seo技巧-301权重代码劫持
  10. java 斑马 打印不出来_通过PrintServer将原始ZPL发送到Zebra打印机不起作用