AES是开发中常用的加密算法之一。AES的算法总是相同的, 但经常遇到前端加密结果,后台无法解密,这是因为加密设置的参数不一致导致的。如果要保持一致,必须使下列参数一致密钥长度、加密模式、填充方式、初始向量。

一、引入Java类

import javax.crypto.*;//AES加密解密
import sun.misc.*;//BASE64转码

二、加密

    /*** 加密*/public static String encrypt(String content,String CRYPT_KEY,String IV_STRING) {byte[] encryptedBytes = new byte[0];try {byte[] byteContent = content.getBytes("UTF-8");//keybyte[] enCodeFormat = CRYPT_KEY.getBytes();SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");//偏移量byte[] initParam = IV_STRING.getBytes();IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);// 指定加密的算法、工作模式和填充方式Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);encryptedBytes = cipher.doFinal(byteContent);} catch (Exception e) {System.out.println("AES encrypt Exception,content = {"+content+"},Exception = {"+e.getStackTrace()+"}");}return new BASE64Encoder().encode(encryptedBytes);}

三、解密

    /*** 解密*/public static String decrypt(String content,String CRYPT_KEY,String IV_STRING) {try {// base64 解码byte[] encryptedBytes = new BASE64Decoder().decodeBuffer(content);//keybyte[] enCodeFormat = CRYPT_KEY.getBytes();SecretKeySpec secretKey = new SecretKeySpec(enCodeFormat, "AES");//偏移量byte[] initParam = IV_STRING.getBytes();IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);// 指定加密的算法、工作模式和填充方式Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);byte[] result = cipher.doFinal(encryptedBytes);return new String(result, "UTF-8");} catch (Exception e) {System.out.println( "AES decrypt Exception,content = {"+content+"},Exception = {"+e.getStackTrace()+"}");}return null;}

四、测试

    public static void main(String[] args) {String CRYPT_KEY = "0123456789abcdef";//keyString IV_STRING = "0123456789abcdef";//偏移量String content = "12345";//原文System.out.println("原文:"+content);String contenCrypt = encrypt(content.toString().replaceAll("(\r\n|\r|\n|\n\r)",""),CRYPT_KEY,IV_STRING);System.out.println("加密:"+contenCrypt);System.out.println("解密:"+decrypt(contenCrypt,CRYPT_KEY,IV_STRING));System.out.println("JS加密密文解密:"+decrypt("xWngUO1XD+BavHm1YkdTxA==",CRYPT_KEY,IV_STRING));}

五、输出结果

Java后台加密解密与上一篇文章《数据AES加密安全传输之前端JS加密解密》对应

参考:https://blog.csdn.net/coyote1994/article/details/52368921

数据AES加密安全传输之后台JAVA加密解密相关推荐

  1. 数据AES加密安全传输之前端JS加密解密

    AES(Advanced Encryption Standard)是一种对称加密方式,旨在取代DES成为广泛使用的标准.我在前端实现关键数据报文加密时采用了该加密方式. 我使用的AES加密架包是cry ...

  2. 【AES 算法】实现服务端 Java 加密,前端 JS 解密

    目录 背景 AES CBC 加解密算法 代码实现 Java 生成 key 和 iv Java 加密 & 解密 JavaScript 解密 小结 背景 我们的游戏充值平台马上要到货一批充值码,需 ...

  3. 前台js MD5加密 后台 java MD5解密

    转载:https://my.oschina.net/qiaojj/blog/514575 记录一下 前端: // base64加密开始var keyStr = "ABCDEFGHIJKLMN ...

  4. RSA加密web前端用户名密码加密传输至后台并解密

    RSA加密web前端用户名密码加密传输至后台并解密 编写加解密公共方法类RSAUtils import org.apache.commons.codec.binary.Base64; import j ...

  5. Java 加密 AES 对称加密算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...

  6. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  7. 前后台数据传输问题----AES加密,前台JS加密,后台JAVA解密。

    一.JS中加密(解密)数据,采用的是谷歌的CryptoJS静态件 链接: https://pan.baidu.com/s/1l5pHY4g45zzL85dDs8M82Q (如果CSDN无法直接跳转,建 ...

  8. 常用的加密有哪些?在Java中如何实现?(MD5、AES、RSA)

    参考: https://blog.csdn.net/qq_41570658/article/details/107694782 https://blog.csdn.net/qq_30054961/ar ...

  9. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  10. java aes iv 24位_【JAVA】AES加密 简单实现 AES-128/ECB/PKCS5Padding

    AES加密 AES 是一种可逆加密算法,对用户的敏感信息加密处理. 本文暂不深入AES原理,仅关注JAVA代码实现AES加解密. JAVA代码实现 这是一个在线AES加密网站.从页面上我们可以看到如下 ...

最新文章

  1. mysql学习总结一:mysql的安装,介绍,基本命令操作
  2. VS 配置外部DLL的引用路径【可执行文件的环境路径】
  3. linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
  4. navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权
  5. python集合和字典的区别_Python中的字典和集合
  6. leetcode990. 等式方程的可满足性
  7. python猜数字游戏快速求解解决方案
  8. python过拟合_梯度下降、过拟合和归一化
  9. tomcat集群的failover机制
  10. RequestInfo关键点解析
  11. CodeVs天梯钻石Diamond题解
  12. Qt 有关ffmpeg的配置
  13. 【转】粒子滤波简介以及相关技术探讨
  14. android模拟机型,(安卓)牛X分身 — 支持位置模拟机型修改
  15. 详解LVDS通信协议
  16. 移动热修复Sophix之初体验
  17. 网络与信息安全方向顶刊顶会
  18. simulink中不能改名_王者荣耀:万格改名教学,空白名、重复名、个性符号名改法技巧!...
  19. html做键盘,用html+js+css做一个模拟键盘
  20. 常用AF对焦算法详解

热门文章

  1. Thinkphp金融超市贷超平台源码带三级分销
  2. python快速搭建网页_使用python快速搭建HTTP服务实现局域网网页浏览或文件传输...
  3. C语言九九乘法表 do while版
  4. 一千行代码铸造Terminal文本编辑器
  5. 安装net framework3.5提示需要.net framework3.5,错误代码0x800f081f
  6. 计算机专业课操作系统,考研计算机专业课操作系统复习要点
  7. LabVIEW使用MX Component与三菱PLC建立通讯(以FX5U举例)
  8. java JDK1.8中文手册
  9. Dynamips--RIP协议分析的详细过程1--前期工作准备
  10. Windows XP英文版安装中文语言包来解决无法显示中文的方法(转载)