OpenSAML 3DES错误的密钥长度:必须等于112或168
问题描述:
我使用OpenSAML加密我SAML response.I改变了我的算法是用AES为以下TripleDes的,现在它开始把我轰异常OpenSAML 3DES错误的密钥长度:必须等于112或168
//数据加密参数 - 秘密密钥
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中设置它?
答
不能使用这种方法,而是应该使用SecurityHelper的其他方法generateKey如下图所示:
SecurityHelper.generateKey("DESede", 168, "SunJCE");
这里的区别是,你需要提供所有的细节,如算法名(在SunJCE,DESede是三重DES),密钥长度和JCA提供者名称(Here SunJCE)。
所以,你应该做这样的事情:
//生成用于数据加密对称密钥
Credential symmetricCredential = SecurityHelper.getSimpleCredential(
SecurityHelper.generateKey("DESede", 168, "SunJCE"));
//指定数据加密参数
EncryptionParameters encParams = new EncryptionParameters();
encParams.setAlgorithm(EncryptionConstants.ALGO_ID_BLOCKCIPHER_TRIPLEDES);
encParams.setEncryptionCredential(symmetricCredential);
希望这有助于。