国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

完美解決Linux操作系統下aes解密失敗的問題

2020-10-28 18:49:06
字體:
來源:轉載
供稿:網友
現象描述:
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的方法上,如下:
復制代碼 代碼如下:

public static SecretKey getKey (String strKey) {
         try {        
            KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
            _generator.init(128, new SecureRandom(strKey.getBytes()));
                return _generator.generateKey();
        }  catch (Exception e) {
             throw new RuntimeException( " 初始化密鑰出現異常 " );
        }
      }

修改到如下方式,問題解決:
復制代碼 代碼如下:

  public static SecretKey getKey(String strKey) {
         try {        
            KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
             SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
            secureRandom.setSeed(strKey.getBytes());
            _generator.init(128,secureRandom);
                return _generator.generateKey();
        }  catch (Exception e) {
             throw new RuntimeException( " 初始化密鑰出現異常 " );
        }
      }

原因分析
SecureRandom 實現完全隨操作系統本身的 主站蜘蛛池模板: 南安市| 德化县| 泾阳县| 平定县| 广宁县| 平度市| 文成县| 淮滨县| 旬邑县| 宜昌市| 四会市| 桑植县| 东源县| 沅陵县| 襄汾县| 山西省| 类乌齐县| 遵义县| 昌平区| 峨眉山市| 凭祥市| 玛多县| 延安市| 翼城县| 大兴区| 潼关县| 台北县| 塘沽区| 民乐县| 额敏县| 伊宁市| 鄂温| 社旗县| 华容县| 诏安县| 冷水江市| 红河县| 辽源市| 永春县| 睢宁县| 沾化县|