2013-08-21 115 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長度)。

相關問題