如何在ASP.Net中加密文件并在Silverlight中解密?

时间:2012-01-16 14:46:35

标签: c# .net silverlight encryption cryptography

我有一个应用程序可以加密文件集合,将它们压缩并通过互联网公开。然后,Silverlight应用程序下载zip文件,并尝试解密每个文件。

我遇到的问题是我为.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应用程序使用相同的代码?

1 个答案:

答案 0 :(得分:0)

虽然未在Silverlight中公开Rijndael,但Aes实现是。

AES 是Rijndael,块大小为128位,IOW不允许使用192和256位大小。由于.NET中的Rijndael默认为128位大小,因此您应该能够毫无问题地进行互操作(除非您使用了另一个大小)。

如果您真的遇到Silverlight中缺少的其他加密功能,那么我建议您从Mono类库中复制/粘贴所需的内容。