第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java AES加密錯(cuò)誤

Java AES加密錯(cuò)誤

瀟湘沐 2021-04-08 18:19:15
我想使用AES加密技術(shù)對(duì)郵件進(jìn)行加密。當(dāng)我使用此代碼時(shí),我遇到了一些錯(cuò)誤java.security.InvalidKeyException: Illegal key size or default parameters我的加密代碼:public class Encryption {    public static class MessageEncrypt {        public static class AES {            private final static String ALGO = "AES";            private String secretKey;            private String data;            public String encrypt(String secretKey, String data) throws Exception {                SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");                KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), secretKey.getBytes(), 128, 256);                SecretKey tmp = factory.generateSecret(spec);                SecretKey key = new SecretKeySpec(tmp.getEncoded(), ALGO);                Cipher cipher = Cipher.getInstance(ALGO);                cipher.init(Cipher.ENCRYPT_MODE, key);                return toHex(cipher.doFinal(data.getBytes()));            }            public String decrypt(String secretKey, String data) throws Exception {                SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");                KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), secretKey.getBytes(), 128, 256);                SecretKey tmp = factory.generateSecret(spec);                SecretKey key = new SecretKeySpec(tmp.getEncoded(), ALGO);                Cipher cipher = Cipher.getInstance(ALGO);                cipher.init(Cipher.DECRYPT_MODE, key);                return new String(cipher.doFinal(toByte(data)));            }            private static byte[] toByte(String hexString) {                int len = hexString.length() / 2;                byte[] result = new byte[len];                for (int i = 0; i < len; i++)                    result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue();                return result;            }
查看完整描述

2 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

您也可以使用沒(méi)有此限制的OpenJDK。

任何從事密碼學(xué)工作的人都知道密碼的導(dǎo)入/導(dǎo)出涉及復(fù)雜的法律問(wèn)題。OpenJDK中的JCE具有開(kāi)放的加密接口,這意味著它不限制可以使用的提供程序。

編輯:由于我太菜鳥(niǎo)了,所以我無(wú)法回復(fù)Jens。


查看完整回答
反對(duì) 回復(fù) 2021-04-18
?
小怪獸愛(ài)吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

最簡(jiǎn)單的解決方案是將jdk升級(jí)到j(luò)dk1.8.0_161或更高版本。


由于有一個(gè)好消息,因?yàn)镴ava打包與從jdk1.8.0_161開(kāi)始的有限和無(wú)限策略jar捆綁在一起,并且默認(rèn)情況下它使用無(wú)限策略設(shè)置。因此,我們所需要做的就是使用升級(jí)的Java版本(jdk1.8.0_161或更高版本


或者


默認(rèn)情況下,java安裝包裝隨附128位密鑰大小,在這里您使用的似乎是更大大小的密鑰。


為了使其正常工作,我們需要從此處安裝java密碼學(xué)擴(kuò)展無(wú)限強(qiáng)度策略jar 。


您需要使用無(wú)限強(qiáng)度的策略jar更新Java安全策略jar。


安裝

筆記:


?Unix(Solaris / Linux / Mac OS X)和Windows使用不同的路徑名分隔符,因此請(qǐng)為您的環(huán)境使用適當(dāng)?shù)姆指舴ā?\”,“ /”)。


?(下)是指JRE的安裝目錄。根據(jù)您是在JRE上運(yùn)行JCE還是在Java Development Kit或JDK?中包含的JRE來(lái)確定。JDK包含JRE,但在文件層次結(jié)構(gòu)中處于不同級(jí)別。例如,如果JDK安裝在Unix上的/home/user1/jdk1.8.0或Windows上的C:\ jdk1.8.0中,則為:


/home/user1/jdk1.8.0/jre [Unix] C:\ jdk1.8.0 \ jre [Windows]


另一方面,如果JRE安裝在Unix上的/home/user1/jre1.8.0或Windows上的C:\ jre1.8.0中,但未安裝JDK,則為:


/home/user1/jre1.8.0 [Unix] C:\ jre1.8.0 [Windows]


?在Windows上,對(duì)于每個(gè)JDK安裝,可能在“程序文件”目錄下安裝了其他JRE。請(qǐng)確保為計(jì)劃使用的所有JRE安裝強(qiáng)度不受限制的策略JAR文件。


以下是安裝說(shuō)明:


1. 從此處下載,解壓縮并提取無(wú)限強(qiáng)度的JCE策略文件。


這將創(chuàng)建一個(gè)名為UnlimitedJCEPolicyJDK8的子目錄。該目錄包含以下文件:


local_policy.jar             Unlimited strength local policy file

US_export_policy.jar         Unlimited strength US export policy file

2. 復(fù)制無(wú)限強(qiáng)度策略JAR文件。這些文件已經(jīng)存在,我們需要用附件替換它們。


<java-home>/lib/security           [Unix]

<java-home>\lib\security           [Windows]


查看完整回答
反對(duì) 回復(fù) 2021-04-18
  • 2 回答
  • 0 關(guān)注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)