import org.junit.Test;
import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.security.crypto.encrypt.TextEncryptor;
public class EncryptorTest {
@Test
public void testEncryption() {
TextEncryptor te = Encryptors.text("password", "abcdef");
te.encrypt("Hello World!");
}
}
我收到此错误:
java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key
看来我必须下载一些策略文件 JCE 扩展才能使其正常工作:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
我想在部署过程中避免这种额外的依赖关系,老实说我不需要 256 位加密。
是否可以将级别降低到无需下载此 JCE 扩展即可运行的级别?
最佳答案
否,值 256 已硬编码到源中:
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), Hex.decode(salt), 1024, 256);
这可以在 AesBytesEncryptor
中找到至少在 3.2.5 版本之前的第 54 行。
请注意,Spring 使用 Apache 许可证,因此没有什么可以阻止您创建自己的使用 128 作为常量的实现。
关于java - 是否可以降低加密级别以避免错误: Unable to initialize due to invalid secret key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207759/