关于在使用AES加密过程中遇到的坑,IBM的JDK和sun的jdk之间加密秘钥补全工作模式的区别

在工作中使用AES加密过程中遇到的坑,网上资料很少,记录下来供大家学习参考

业务场景描述:
在一次开发中,我们属于服务平台开发很多接口,供其他各个公司的各个系统调用存取数据,但是由于数据安全的问题,领导要求对数据进行加密传输,并且不让自己写算法实现,经过决定,最终采用AES加密算法进行加密,本人负责此次加密的开发,但是这之中AES加密的坑。不说了,开始介绍:

关于AES和DES,以及3DES这些对称加密算发的介绍,这里不做阐述,只提及一下对称加密中的秘钥:
AES :加密秘钥指定为16个字节长度   
DES:加密秘钥指定为8个字节长度
但是在我们的加密过程中,秘钥肯定有自己的真正含义,不可能根据算发的规则去改变我们的业务场景,那么,就不得不提及一个概念,就是工作模式
它会自动补全秘钥或者截取秘钥,按照指定的模式进行算发截取。
自己开始的加密方式:
![按照这种加密模式指定,一开始没有什么问题,本人开发使用的是tomcat8,sun的jdk win7机器,加解密一切正常](https://img-blog.csdnimg.cn/20190723152104355.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwNTIwNTg1,size_16,color_FFFFFF,t_70)

然而,当把项目部署到服务器上是(linux机器 sun的JDK),出现了无法解密的现象

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好!使用Hutool进行AES加密需要先引入Hutool和JDK17的依赖,可以在pom.xml添加如下代码: ```xml <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.4</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk17</artifactId> <version>1.69</version> </dependency> </dependencies> ``` 然后可以使用Hutool的AES工具类进行加密,示例代码如下: ```java import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.symmetric.AES; public class AesTest { public static void main(String[] args) { String content = "Hello, world!"; // 待加密内容 String password = "1234567890123456"; // 密,长度必须为16位 // 初始化AES加密AES aes = SecureUtil.aes(password.getBytes()); // 加密内容 byte[] encrypt = aes.encrypt(content.getBytes()); // 输出加密结果 System.out.println(new String(encrypt)); } } ``` 其,密码必须是16位长度的字符串,可以根据实际需求进行修改。 ### 回答2: Hutool AES是一个Java工具库,用于提供AES加密算法的实现。AES(Advanced Encryption Standard),也称为高级加密标准,是一种对称加密算法,是目前应用最广泛的加密算法之一。 JDK 17是Java Development Kit的最新版本,也是Java编程语言的一个平台。它提供了许多功能和工具来简化开发过程,并提供了强大的安性支持。 Hutool AES结合了JDK 17的加密功能,提供了一种简单易用的方式来实现AES加密。通过Hutool AES,我们可以使用Java代码来加密和解密数据。 对于使用Hutool AES进行加密,我们首先需要创建一个AES加密器。然后,我们可以使用加密器的方法来加密和解密数据。加密过程,我们需要指定密加密模式。Hutool AES还提供了对填充模式和初始向量的支持,以增强加密的安性。 使用Hutool AES加密数据的一个常见的应用场景是在进行敏感数据传输时,例如用户的密码或银行账号等。通过使用AES加密算法,我们可以将数据加密后再传输,以保护数据的安性。 综上所述,Hutool AES结合了JDK 17的加密功能,提供了一个简单易用的方式来实现AES加密使用Hutool AES,我们可以使用Java代码来加密和解密数据,以提高数据的安性。 ### 回答3: Hutool是一个Java工具包,提供了一系列的工具类,包括加密解密工具类。其AES(Advanced Encryption Standard)是一种对称加密算法,它在加密和解密过程使用相同的密JDK 1.7是Java Development Kit的一个版本,是Java编程语言的一个开发平台。 HutoolAES加密功能可以在JDK 1.7环境使用使用Hutool的AES工具类,我们可以方便地对数据进行加密和解密操作。加密过程,我们需要指定加密的内容和密,并可以选择加密模式、填充方式等。加密后的结果是一串密文,具有较高的安性。解密过程,我们需要指定解密的密文和密,然后使用相同的算法进行解密,得到原始的明文数据。 AES加密算法具有安性强、可靠性高的特点,被广泛应用于网络通信、数据库存储等领域。通过使用Hutool的AES加密功能,我们可以在JDK 1.7环境方便地对数据进行保护,确保数据的安性和机密性。 总之,Hutool提供的AES加密工具类可以在JDK 1.7环境使用,帮助我们对数据进行加密和解密操作。这为我们提供了一个方便、高效的加密解密解决方案,保护了数据的安性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值