一、报错

写了一个加密方法,在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上再次运行测试,不报错了。问题解决。

最新文章

  1. (转载) RESTful API 设计指南
  2. UDP Server
  3. Atitit.去除水印的方案
  4. UAT SIT QAS DEV PET
  5. 最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary
  6. sql事务和锁
  7. BJFU 1015
  8. 算法导论第十八章 B树
  9. Android Keycode详解
  10. Java学习笔记之:Java封装
  11. OSI七层模型理解
  12. python 调用hive查询实现类似存储过程
  13. ListView列表项
  14. CodeForces 519B A and B and Compilation Errors【模拟】
  15. Python学习笔记(一):列表和元组
  16. Servlet - 基础
  17. 【深度学习】一文读懂机器学习常用损失函数(Loss Function)
  18. 【Tensorflow】Tensorflow r1.0, Ubuntu, gpu, conda安装说明
  19. Linux 下统计Apache每分钟的并发数
  20. jsp导出简单的excel

热门文章

  1. MVC中的数据注解和验证
  2. 发布一款Github博客皮肤
  3. PAT复杂度_最大子列和问题、最大子列和变种
  4. [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式
  5. 学习IO流
  6. JS 数组迭代方法
  7. 搭建S3C6410开发板的测试环境
  8. 基于webpack使用ES6新特性(转载)
  9. web app响应式字体设置!rem之我见
  10. 161227、js显示对象所有属性和方法的函数