javax.crypto.BadPaddingException: Given final block not properly padded
2024-10-14 22:12:39
一、报错
写了一个加密方法,在Windows上运行没有问题,在Linux上运行时提示如下错误:
javax.crypto.BadPaddingException: Given final block not properly padded
二、定位
查找资料,得到原因:
SecureRandom实现完全随操作系统本身的內部状态。
该实现在 windows 上每次生成的 key 都相同。
但是在 solaris 或部分 linux 系统上则不同。
通过日志打印,证实了这一点。
三、解决
资料里还有这么一句:
SecureRandom ...除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法。
原代码如下:
secureRandom = new SecureRandom(seed.getBytes());
修改后的代码如下:
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(seed.getBytes());
在Linux上再次运行测试,不报错了。问题解决。
最新文章
- (转载) RESTful API 设计指南
- UDP Server
- Atitit.去除水印的方案
- UAT SIT QAS DEV PET
- 最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary
- sql事务和锁
- BJFU 1015
- 算法导论第十八章 B树
- Android Keycode详解
- Java学习笔记之:Java封装
- OSI七层模型理解
- python 调用hive查询实现类似存储过程
- ListView列表项
- CodeForces 519B A and B and Compilation Errors【模拟】
- Python学习笔记(一):列表和元组
- Servlet - 基础
- 【深度学习】一文读懂机器学习常用损失函数(Loss Function)
- 【Tensorflow】Tensorflow r1.0, Ubuntu, gpu, conda安装说明
- Linux 下统计Apache每分钟的并发数
- jsp导出简单的excel