java - 是否可以降低加密级别以避免错误: Unable to initialize due to invalid secret key

标签 java spring encryption

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/

相关文章:

Java文件删除和System.gc()

java - 如何使用序列生成器注释访问 Oracle 数据库中定义的序列以生成 id

java - 无法使用 Spring 在 Junit 测试中注入(inject) DAO

java - 如何使用 Java 从字体文件中读取 Unicode 范围

java - 在 swagger 注释中参数化类

java - Spring 5 PathVariable 验证导致 Http 404

ssl - 确认 CloudFlare 和源服务器之间的流量已加密

java - 将字符串转换为私钥和公钥 (RSA)

来自 iOS Swift 的 PHP AES256 PKCS7 解密

java - 从Java中的文本文件中删除注释