java. Lang.illegalargumentexception: unable to initialize due to invalid key
•
Java
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
二维码