0

OpenSAML を使用して SAML 応答を暗号化しています。以下のようにアルゴリズムを AES から TRIPLEDES に変更したところ、次の例外がスローされ始めました。

//データ暗号化パラメータ - 秘密鍵

EncryptionParameters encParams = new EncryptionParameters();
encParams.setAlgorithm(EncryptionConstants.ALGO_ID_BLOCKCIPHER_TRIPLEDES);

java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168
    com.sun.crypto.provider.DESedeKeyGenerator.engineInit(DashoA13*..)
    javax.crypto.KeyGenerator.init(DashoA13*..)
    javax.crypto.KeyGenerator.init(DashoA13*..)

キー サイズを 168 に設定する必要があることはわかっていますが、OpenSAML で設定するにはどうすればよいですか?

4

1 に答える 1

3

このメソッドを使用することはできません。代わりに、以下に示すように、SecurityHelperの他のメソッドgenerateKeyを使用する必要があります。

SecurityHelper.generateKey("DESede", 168, "SunJCE");

ここでの違いは、アルゴリズム名(SunJCEではDESedeはトリプルDES)、キーの長さ、JCAプロバイダー名(ここではSunJCE)などのすべての詳細を提供する必要があることです。

したがって、次のようなことを行う必要があります。

//データ暗号化用の対称鍵を生成します

Credential symmetricCredential = SecurityHelper.getSimpleCredential(

                                SecurityHelper.generateKey("DESede", 168, "SunJCE"));

//データ暗号化パラメータを指定します

    EncryptionParameters encParams = new EncryptionParameters();
    encParams.setAlgorithm(EncryptionConstants.ALGO_ID_BLOCKCIPHER_TRIPLEDES);  
    encParams.setEncryptionCredential(symmetricCredential);

お役に立てれば。

于 2012-10-18T10:24:01.727 に答える