java. Lang.illegalargumentexception: unable to initialize due to invalid key

I received an encryption exception

I'm running

>OS X 10.11 > java 1.8 > groovy version: 2.4 4 > Gradle 2.3-20141027185330 0000; > JAVA_ HOME = / Library / Java / JavaVirtualMachines / jdk1. 8.0_ 05.jdk / Contents / Home

I installed Oracle JCE policy jar into my $Java_ In the home / lib / security Directory:

$ls -l $JAVA_HOME/lib/security
total 16
-rw-r--r--@ 1 root  wheel  2487 Oct  9 17:21 US_export_policy.jar
-rw-r--r--@ 1 root  wheel  2500 Oct  9 17:21 local_policy.jar

This is the exception:

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

Code snippet:

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"))
    }
...

}

Solution

The most common reason for this problem is that / lib / security does not have the Java cryptography extension (JCE) infinite strength jurisdiction policy file installed

Download the Java 7 jar from here

Download the Java 8 jar from here

According to the readme file, you should start and run

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>