<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    AES加密報錯:Illegal key size or default parameters

    管理 管理 編輯 刪除
    最近在使用AES方式進行加密,本來經果測試已經沒有問題,但是在更新了密鑰key之后,就出現了下列報錯。

    控制臺報錯如下:

    Exception in thread "main" java.lang.RuntimeException: Illegal key size or default parameters
    	at com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:98)
    	at com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:86)
    	at com.cupdata.oam.cardapply.kit.AesKit.decryptToStr(AesKit.java:56)
    	at com.cupdata.oam.cardapply.kit.AesKit.main(AesKit.java:194)
    Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
    	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
    	at javax.crypto.Cipher.implInit(Cipher.java:801)
    	at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
    	at javax.crypto.Cipher.init(Cipher.java:1249)
    	at javax.crypto.Cipher.init(Cipher.java:1186)
    	at com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:94)
    	... 3 more
    
    

    網上搜索發現,由于key的變更(由原來的128位變更為256位),導致加密/解密的失敗。
    原來的密鑰:
    lNQqkL1BfSwt2MKw

    新的密鑰: P_e-BhqDPP0yeMe8Ma43ZhhL6fqevuR8

    之所以會出現這種問題,我們就要了解一個新的東西——JCE。在Java的核心類庫中有一個JCE(Java Cryptography Extension),JCE是一組包,它們提供用于加密、密鑰生成和協商以及 Message Authentication Code(MAC)算法的框架和實現,所以這個是實現加密解密的重要類庫。

    之所以會出現上述的報錯問題:是因為AES在進行加密處理的時候并沒有經果特殊的處理,但是在使用256位密鑰加解密的時候,如果不進行特殊處理的話,往往會出現報“java.security.InvalidKeyException: Illegal key size or default parameters”的異常。

    問題解決

    通過上面描述,我們知道了問題的所在,下面開始解決。我們要做的就是更換JCE的庫,該文件位置在你的JDK/jre/lib/security 目錄下面,該目錄下我們可以看到兩個jar包:local_policy.jar,US_export_policy.jar,這兩個jar包是jdk自帶的。我們需要下載支持256位密鑰加密的jar包。

    ca88d202303101506066039.png


    備注:一定要下載與自己JDK版本一致的JCE,否則無效。

    JDK8:

    其對應的JCE下載地址為:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

    下載完后,解壓,將其中的“local_policy.jar ”和“US_export_policy.jar”兩個文件替換掉自己%JAVE_HOME%\jre\lib\security文件夾下對應的原文件(%JAVE_HOME%是自己電腦的Java路徑)。

    JDK7:

    其對應的JCE下載地址為:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

    下載完后,解壓,將其中的“local_policy.jar ”和“US_export_policy.jar”兩個文件替換掉自己%JAVE_HOME%\jre\lib\security文件夾下對應的原文件(%JAVE_HOME%是自己電腦的Java路徑)。

    JDK6:

    其對應的JCE下載地址為:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

    下載完后,解壓,將其中的“local_policy.jar ”和“US_export_policy.jar”兩個文件替換掉自己%JAVE_HOME%\jre\lib\security文件夾下對應的原文件(%JAVE_HOME%是自己電腦的Java路徑)。

    JDK5:

    其對應的JCE下載地址為:http://download.csdn.net/detail/scs2043/4237335

    下載完后,解壓,將其中的“local_policy.jar ”和“US_export_policy.jar”兩個文件替換掉自己%JAVE_HOME%\jre\lib\security文件夾下對應的原文件(%JAVE_HOME%是自己電腦的Java路徑)。

    擴展:
    真實項目開發肯定在Linux中,前面我們知道Windos下更換JCE的方法,那么的Linux中怎么更換?如果你以為一樣去替換jar包,那就大錯特錯了,因為JDK1.8以上的該目錄下壓根沒有這兩個JAR包。(如果真有,就直接替換)

    3557d202303101508121502.png

    針對這種情況,我們的解決方式為:vim 命令打開java.security文件,將注釋掉的 #crypto.policy=unlimited 打開,然后保存即可







    請登錄后查看

    CRMEB-慕白寒窗雪 最后編輯于2023-03-10 15:09:00

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    4769
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服