【发布时间】:2021-08-24 04:11:21
【问题描述】:
我遇到了加密异常。
我在跑步
- OS X 10.11
- Java 1.8
- Groovy 版本:2.4.4
- Gradle 2.3-20141027185330+0000;
- JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
我将 Oracle JCE Policy jar 安装到我的 $JAVA_HOME/lib/security 目录中:
$ 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
这是一个例外:
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"))
}
...
}
【问题讨论】:
-
你能把你的加密代码放在别的地方吗?我们怎么知道你是否会出错??
-
这些文件不是 Oracle JDK8 无限强度策略 jar 的正确大小,但它们是 JDK7 的正确大小。确保使用 8 的下载。
-
你说得对!问题已解决!
标签: java