PBEWITHHMACSHA256ANDAES_256
アルゴリズムをJava8のSunJCE providerから使いたいと思います。JCEのPBEWITHHMACSHA256ANDAES_256アルゴリズムの使用方法
jarのように見えますが、configのすべてがJava8のすぐに使用できますが、PBEWITHHMACSHA256ANDAES_256
アルゴリズムを使用することはできません。
は、私は、これら二つのjarファイルを持っている:私、私は配列でcom.sun.crypto.provider.SunJCE
を見ることができますjdk1.8.0_40\jre\lib\security\java.policy
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
でこのエントリがありますjdk1.8.0_40\jre\lib\security\java.security
security.provider.5=com.sun.crypto.provider.SunJCE
でこのエントリがあります
jdk1.8.0_40\jre\lib\jce.jar
jdk1.8.0_40\jre\lib\ext\sunjce_provider.jar
Security.getProviders()
しかし、次のコードは、EncryptionOperationNotPossibleException
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.jasypt.exceptions.EncryptionOperationNotPossibleException;
import org.junit.Assert;
import org.junit.Test;
public class EncryptionTest {
@Test
public void test() {
SimpleStringPBEConfig pbeConfig = new SimpleStringPBEConfig();
pbeConfig.setAlgorithm("PBEWITHHMACSHA256ANDAES_256");
pbeConfig.setPassword("changeme");
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setConfig(pbeConfig);
String encrypted = encryptor.encrypt("foo");
String decrypted = encryptor.decrypt(encrypted);
Assert.assertEquals("foo", decrypted);
}
}
例外
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.handleInvalidKeyException(StandardPBEByteEncryptor.java:999)
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.encrypt(StandardPBEByteEncryptor.java:868)
at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:642)
at foo.bar.EncryptionTest.test(EncryptionTest.java:40)
PBEWITHHMACSHA256ANDAES_256がEncryptionOperationNotPossibleExceptionを投げている理由を任意のアイデアを投げますか?
これにより、すべての開発者は自分のjreをカスタマイズする必要があり、すべてのサーバーでjreを変更する必要があります。実行時にこれを行うことができる動的なソリューションはありますか? –
いいえこれは、Javaの輸出ルールが米国から知られている制限です。これをJavaのインストールの追加ステップとみなして文書化する必要があります。これを忘れるのは本当に簡単です。これを簡単にするには、スクリプトと2つのjarファイルを各開発者に提供して、適切に実行するようにします。しかし、まず、Java 8のJDK/JREを(例えば、$ JAVA_HOME/bin/java -version'を実行して)実行することを確認してください。 Java 7 JDKまたはJREにインストールすると、JDKが破損します。 –
本当の選択肢ですが、独自のプロバイダで自分でアルゴリズムを実装することもできます。私はそれに対して*強くお勧めします。あなたのプロフィールには、あなたが英国に住んでいると言われています。あなたは通常、そのパッケージに合法的にアクセスし、それを使用する必要があります。 –