2009-06-02 29 views
2

我正在做一些我不控制的服務器端服務的工作。以下工作在標準C#罰款,但失敗了(由於缺少加密類)在Silverlight 2和3如何解決silverlight 2/3中缺少的加密類?

static String DecryptString() 
    { 
     s = "<cipherTextHere>"; 

     byte[] toDecryptArray = Convert.FromBase64String(s); 
     string key = "<key here>"; 

     byte[] keyArray = new byte[key.Length/2]; 
     for (int i = 0; i < keyArray.Length; i++) 
     { 
      keyArray[i] = Convert.ToByte(Convert.ToInt32(key.Substring(i * 2, 2), 16)); 
     } 

     using (var algo = new System.Security.Cryptography.AesManaged()) 
     { 

      // The two lines below are the problem 
      // as SL does not give me the option to select padding or ciphermode 
      algo.Padding = PaddingMode.PKCS7; 
      algo.Mode = CipherMode.ECB; 

      algo.Key = keyArray; 

      ICryptoTransform cTransform = algo.CreateDecryptor(); 
      byte[] resultArray = cTransform.TransformFinalBlock(
           toDecryptArray, 0, toDecryptArray.Length); 

      return (UTF8Encoding.UTF8.GetString(resultArray, 0, resultArray.Length)); 

     } 
    } 

有什麼選擇?

回答

0
someone smart

解決方案:「你不能在Silverlight中選擇填充或ciphermode爲AesManaged,所以你必須使用默認填充默認情況下爲PKCS7就像在你的C#代碼,但加密模式是CBC。」

這工作,但我現在不得不去convinnce服務提供商切換:(

0

呼籲Legion of the Bouncy Castle幫助你擺脫這種束縛。

+0

的問題是,他們似乎並沒有對Silverlight的編譯什麼。 – aronchick 2009-06-02 19:56:09

+0

很容易定製編譯它適用於Silverlight;它們已經有了Compact Framework的構建版本 – 2009-06-02 20:20:51

1

您可以編寫自己的加密提供程序,也可以搜索已解決問題的第三方組件。

我知道xceed已經爲Silverlight實現了壓縮提供程序,因此壓縮和加密完全可能。

嘗試

Cryptography Tutorial

+0

你有建議在Silverlight中滾動我自己的加密提供程序嗎? – aronchick 2009-06-02 20:02:04

0

Silverlight 2中確實有一些實施的System.Security.Cryptography命名空間的。請參閱文檔here。你缺少什麼?

相關問題