java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/CBC/PKCS7Padding

最近在做AES-128解密的時候,遇到了這個問題

java.security.NoSuchAlgorithmException:Cannot find any provider
supporting AES/CBC/PKCS7Padding

private byte[] decrypt(byte[] ts) {
        try {   
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
            SecretKeySpec keySpec = new SecretKeySpec(this.keyByte, "AES");           
            AlgorithmParameterSpec paramSpec = new IvParameterSpec(this.ivByte);
            cipher.init(Cipher.DECRYPT_MODE, keySpec, paramSpec);
            return cipher.doFinal(ts);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

出現這個問題的原因是:java自帶的是PKCS5Padding填充,不支持PKCS7Padding填充。

解決辦法:添加靜態代碼塊,通過BouncyCastle組件來讓java裏面支持PKCS7Padding填充

	/**
     * 解決java不支持AES/CBC/PKCS7Padding模式解密
     */
    static {
        Security.addProvider(new BouncyCastleProvider());
    }

環境JDK8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章