【问题标题】:How do I work around the missing crypto classes in silverlight 2/3?如何解决 silverlight 2/3 中缺少的加密类?
【发布时间】:2009-06-02 19:46:39
【问题描述】:

我正在使用我无法控制的服务器端服务进行一些工作。以下在标准 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));

        }
    }

我有什么选择?

【问题讨论】:

    标签: c# silverlight cryptography


    【解决方案1】:

    您可以编写自己的加密提供程序,也可以搜索已经解决该问题的第三方组件。

    我知道 xceed 已经为 Silverlight 实现了一个压缩提供程序,因此压缩和加密绝对是可能的。

    试试

    Cryptography Tutorial

    【讨论】:

    • 您对在 Silverlight 中推出我自己的加密提供商有什么建议吗?
    • 添加了原始答案的超链接
    【解决方案2】:

    致电Legion of the Bouncy Castle 帮助您摆脱这种束缚。

    【讨论】:

    • 问题是他们似乎没有为 silverlight 编译任何东西。
    • 很容易为 Silverlight 定制编译它;他们已经为 Compact Framework 构建了一个版本。
    【解决方案3】:

    Silverlight 2 确实实现了一些 System.Security.Cryptography 命名空间。请参阅文档here。你缺少什么?

    【讨论】:

    • 缺少的是设置填充和密码模式的能力。
    【解决方案4】:

    来自someone smart 的解决方案:“您不能在 Silverlight 中为 AesManaged 选择填充或密码模式,因此您必须使用默认值。默认填充是 PKCS7,就像在您的 C# 代码中一样,但密码模式是 CBC。”

    这可行,但现在我必须说服服务提供商切换:(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多