我正在使用不受控制的服务器端服务进行一些工作。以下内容在标准C#中可以正常运行,但在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));
}
}
我有什么选择?
最佳答案
您可以编写自己的加密提供程序,也可以搜索已经解决该问题的第三方组件。
我知道xceed已为Silverlight实现了压缩提供程序,因此绝对可以进行压缩和加密。
尝试
Cryptography Tutorial