我有一个应用程序可以加密文件集合,将它们压缩并通过互联网公开。然后,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应用程序使用相同的代码?
答案 0 :(得分:0)
虽然未在Silverlight中公开Rijndael
,但Aes
实现是。
AES 是Rijndael,块大小为128位,IOW不允许使用192和256位块大小。由于.NET中的Rijndael
默认为128位块大小,因此您应该能够毫无问题地进行互操作(除非您使用了另一个块大小)。
如果您真的遇到Silverlight中缺少的其他加密功能,那么我建议您从Mono类库中复制/粘贴所需的内容。