【问题标题】:OpenSAML 3DES Wrong keysize: must be equal to 112 or 168OpenSAML 3DES 错误的密钥大小:必须等于 112 或 168
【发布时间】:2012-07-27 16:57:42
【问题描述】:

我正在使用 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 中设置它?

【问题讨论】:

    标签: encryption opensaml


    【解决方案1】:

    这个方法不能用,应该用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);
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 2013-05-27
      • 2022-01-27
      相关资源
      最近更新 更多