zoukankan      html  css  js  c++  java
  • 解决Linux操作系统下AES解密失败的问题

    现象描述:
    windows上加解密正常,linux上加密正常,解密时发生如下异常

    javax.crypto.BadPaddingException: Given final block not properly padded

           at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
           at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
           at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
           at javax.crypto.Cipher.doFinal(DashoA13*..)
           at chb.test.crypto.AESUtils.crypt(AESUtils.java:386)
           at chb.test.crypto.AESUtils.AesDecrypt(AESUtils.java:254)
           at chb.test.crypto.AESUtils.main(AESUtils.java:40) 

    解决方法:
    经过检查之后,定位在生成KEY的方法上,如下:
    修改到如下方式,问题解决:


    原因分析

    SecureRandom 实现完全隨操作系统本身的內部狀態,除非調用方在調用 getInstance 方法之後又調用了 setSeed 方法;该实现在 windows 上每次生成的 key 都相同,但是在 solaris 或部分 linux 系统上则不同。
  • 相关阅读:
    为什么选择 Yeoman 及 Yeoman 的安装
    NPOI高效匯出Excel
    CentOS7 MongoDB安裝
    打印函数调用堆栈
    libevent源码分析:eventop
    libevent源码分析:time-test例子
    libevent源码分析:event_assign、event_new
    libevent源码分析:bufferevent
    lievent源码分析:evbuffer
    epoll实现压测工具
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330185.html
Copyright © 2011-2022 走看看