日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 exception javax.crypto.BadPaddingException: Given final block not properly padded 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

CreationTime--2018年8月10日14點46分

Author:Marydon

1.情景還原

  linux系統下,AES解密失敗,報錯信息如下:

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

  windows操作系統下,使用AES進行加密、解密正常;

  在Linux下,相同的待加密字符串,每次加密結果都不一樣,而且解密失敗。

2.原因分析

  原因:由于key的生成方式不同引起的!

// 強隨機數生成器 SecureRandom random = new SecureRandom(password.getBytes(ENCODING))

  上面的強隨機數生成器,并沒有指定算法名稱,所以,會根據操作系統的生成隨機數,

  由于windows和linux的內核不同,因此生成的隨機數也會不同,所以導致解密失敗!

3.解決方案

  由于SecureRandom沒有指定算法名稱時,隨機數的生成會隨操作系統本身的內部狀態而變化,

  所以,我們需要手動指定隨機數的生成規則,如何實現?

  在調用 getInstance 方法之后,再調用 setSeed 方法;

// 只適用windows // kgen.init(128, new SecureRandom(password.getBytes(ENCODING))); // 指定強隨機數的生成方式 // 兼容linux SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(password.getBytes(ENCODING)); kgen.init(128, random);

  

?相關推薦:

  • java AES加密、解密(兼容windows和linux)

?

轉載于:https://www.cnblogs.com/Marydon20170307/p/9455161.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的exception javax.crypto.BadPaddingException: Given final block not properly padded的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。