2015-10-10 53 views
2

我收到加密異常。java.lang.IllegalArgumentException:由於無效的密鑰導致無法初始化

我跑

  • OS X 10.11
  • 的Java 1.8
  • Groovy的版本:2.4.4
  • 搖籃2.3-20141027185330 + 0000;
  • JAVA_HOME = /圖書館/的Java/JavaVirtualMachines/jdk1.8.0_05.jdk /內容/首頁

我安裝了Oracle JCE策略罐子到我的$ JAVA_HOME/lib/security目錄:

$ ls -l $JAVA_HOME/lib/security 
total 16 
[email protected] 1 root wheel 2487 Oct 9 17:21 US_export_policy.jar 
[email protected] 1 root wheel 2500 Oct 9 17:21 local_policy.jar 

這裏的例外:

com.distributedfinance.mbi.bai.lookup.AccountLookupSpec > constructor missing encryptor FAILED 
19:05:00.431 [DEBUG] [TestEventLogger]  java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key 
19:05:00.431 [DEBUG] [TestEventLogger]   at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:110) 
19:05:00.431 [DEBUG] [TestEventLogger]   at org.springframework.security.crypto.encrypt.AesBytesEncryptor.encrypt(AesBytesEncryptor.java:65) 
19:05:00.431 [DEBUG] [TestEventLogger]   at org.springframework.security.crypto.encrypt.HexEncodingTextEncryptor.encrypt(HexEncodingTextEncryptor.java:36) 
19:05:00.431 [DEBUG] [TestEventLogger]   at com.distributedfinance.mbi.bai.lookup.AccountLookupSpec.setup(AccountLookupSpec.groovy:26) 
19:05:00.431 [DEBUG] [TestEventLogger] 
19:05:00.431 [DEBUG] [TestEventLogger]   Caused by: 
19:05:00.431 [DEBUG] [TestEventLogger]   java.security.InvalidKeyException: Illegal key size 
19:05:00.431 [DEBUG] [TestEventLogger]    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1034) 
19:05:00.431 [DEBUG] [TestEventLogger]    at javax.crypto.Cipher.implInit(Cipher.java:800) 
19:05:00.431 [DEBUG] [TestEventLogger]    at javax.crypto.Cipher.chooseProvider(Cipher.java:859) 
19:05:00.432 [DEBUG] [TestEventLogger]    at javax.crypto.Cipher.init(Cipher.java:1370) 
19:05:00.432 [DEBUG] [TestEventLogger]    at javax.crypto.Cipher.init(Cipher.java:1301) 
19:05:00.432 [DEBUG] [TestEventLogger]    at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:105) 
19:05:00.432 [DEBUG] [TestEventLogger]    ... 3 more 

代碼段:

import com.distributedfinance.mbi.payment.repository.AccountRepository 
import com.distributedfinance.mbi.domain.Account 
import org.springframework.security.crypto.encrypt.Encryptors 
import org.springframework.security.crypto.encrypt.TextEncryptor 


class AccountLookupSpec extends Specification { 
    public static final Logger LOGGER = LoggerFactory.getLogger(AccountLookupSpec.class) 

    AccountLookup accountL ookup 
    List<Account> accounts 
    AccountRepository accountRepository 
    TextEncryptor encryptor 

    def setup() { 
     accountRepository = Mock() 
     encryptor = Encryptors.text("password", "991239bab013") 

     accounts = new ArrayList<Account>() 
     Account account = new Account() 
     account.setAccountNumber(encryptor.encrypt("1234567890")) 
    } 
... 

}

+2

你可以把你的加密代碼否則我們可以弄清楚,如果你可以犯一些錯誤? – hagrawal

+0

添加上面的代碼。 – dbl001

+0

這些文件對於Oracle JDK8無限強度策略瓶子來說不是正確的大小,但是它們是JDK7大小的正確大小。確保你使用下載8。 –

回答

1

其他原因會發生這種情況:

  • 你不使用的JDK,而不是JRE在您的項目
  • 你沒有把政策罐子在正確的文件夾(基本上JDK/jre/lib/security - 請參閱自述文件)。
1

此問題的最常見原因是/ lib/security中一點兒也不具備安裝Java加密擴展(JCE)無限強度權限策略文件

Download the jar from here

按照我讀文件,你應該開始運行

相關問題