Как мне обойти пропавшие классы крипто в Silverlight 2/3? - PullRequest
2 голосов
/ 02 июня 2009

Я работаю со службой на стороне сервера, которую я не контролирую. Следующее прекрасно работает в стандартном 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));

        }
    }

Какие у меня варианты?

Ответы [ 4 ]

1 голос
/ 02 июня 2009

Вы можете написать собственного провайдера шифрования или выполнить поиск сторонних компонентов, которые уже устранили проблему.

Я знаю, что в xceed реализован поставщик сжатия для Silverlight, поэтому сжатие и шифрование определенно возможны.

попробовать

Учебник по криптографии

0 голосов
/ 03 июня 2009

Решение от кто-то умный : "Вы не можете выбрать заполнение или зашифрованный режим для AesManaged в Silverlight, поэтому вам придется использовать значение по умолчанию. По умолчанию заполнение - это PKCS7, как в вашем коде C #, но в режиме шифрования это CBC. "

Это работает, но теперь мне нужно убедить поставщика услуг переключиться: (

0 голосов
/ 03 июня 2009

В Silverlight 2 реализовано некоторое пространство имен System.Security.Cryptography. Смотри документацию здесь . Чего тебе не хватает?

0 голосов
/ 02 июня 2009

Призовите Легион Надувного Замка , чтобы помочь вам выйти из этого предела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...