2012-01-16 47 views
2

我有一個應用程序加密一組文件,將它們壓縮並通過互聯網公開。 Silverlight應用程序然後下載壓縮文件,並試圖解密每個文件。如何在ASP.Net中加密文件並在Silverlight中對其進行解密?

我遇到的問題是我爲.Net應用程序編寫的加密代碼無法用於Silverlight應用程序,因爲CLR不同 - 這是我的一個相當主要的監督。

用於創建算法的原始C#.NET代碼是:

private static SymmetricAlgorithm CreateRijndael(string password, byte[] salt) 
{ 
    var derivedBytes = new Rfc2898DeriveBytes(password, salt, 1000); 

    SymmetricAlgorithm sma = Rijndael.Create(); 
    sma.KeySize = 256; 
    sma.Key = derivedBytes.GetBytes(32); 
    sma.Padding = PaddingMode.PKCS7; 
    return sma; 
} 

然而,Rijndael算法並不在Silverlight露出。我怎樣才能修改這個,以便我可以爲Silverlight編譯它,同時爲我的.Net應用程序使用相同的代碼?

+0

由於silverlight運行在客戶端上,我錯誤地認爲任何熟練的開發人員都可以反編譯xap文件並檢索密碼/鹽值? –

+0

爲什麼不使用SSL? – Steven

+0

@Steve B,可能,但在這種情況下,密碼值不是已編譯應用程序的一部分。 – Digbyswift

回答

0

雖然Rijndael沒有在Silverlight中公開,Aes的實現是。

AES是Rijndael的128位的塊大小,IOW它不允許使用192個256位大小。由於NET中的Rijndael默認爲128位大小,那麼你應該能夠互操作沒有任何問題(除非你使用另一個大小)。

如果你確實遇到Silverlight中缺少的其他加密功能,那麼我建議你從Mono類庫複製/粘貼你需要的東西。

相關問題