是否可以降低加密级别以避免错误:由于无效的密钥而无法初始化

时间:2014-11-29 22:17:24

标签: 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扩展名的工作级别?

1 个答案:

答案 0 :(得分:2)

没有值256被硬编码到源中:

PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), Hex.decode(salt), 1024, 256);

这可以在第54行的AesBytesEncryptor中找到,至少发布3.2.5。

请注意,Spring使用Apache许可证,因此没有什么可以阻止您创建使用128作为常量的自己的实现。