exception javax.crypto.BadPaddingException: Given final block not properly padded
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下mysql-5.6忘记roo
- 下一篇: 0x53 区间DP