2013-08-21 118 views
0

我试图使用身份证书加密最终的mdm配置文件(在SCEP有效负载之后得到响应)。 我有以下代码:密钥长度不是128/192/256位

context.Request.InputStream.CopyTo(deviceResponse); 

    var signer = new SignedCms(); 
    signer.Decode(deviceResponse.ToArray()); 
    X509Certificate2 certificate = signer.Certificates[0]; 
    string str= sonething; //my final configuraton profile      
encryptedProfile = AESEncryption(str, cerificate.GetPublicKeyString(), true, Encoding.Default, pkcs); 

我得到异常:密钥长度不128/192/256位。

如何加密最终配置文件(我正在使用Bouncy Castle库)?

问候

马格

回答

0

这不应该是AES加密。它必须是CMSAlgorithm.DES_EDE3_CBC加密的。

+0

这是它需要在Bouncycastle中完成的方式,它对我有用。只需将其加密到具有iOS身份证书的CMSAlgorithm.DES_EDE3_CBC中即可。然后正常标志作为前一步发生。为此,有效负载需要进行Base64编码。更好地检查Apple给出的ruby伴侣文件来比较这一点。在我看来,正常加密在这种情况下不起作用。 – Dilshan

+0

这与给定的异常消息不匹配,除非有人发明了256位DES密钥。这不会以任何方式使答案无效,但这似乎是Q&A之间的不一致。 –

0

看起来好像你的“cerificate.GetPublicKeyString()”没有返回一个带有propper长度(128/192/256位)的密钥。您需要的最小值是128位(16字节= 16长度)。

相关问题