Почему RijndaelManaged и AesCryptoServiceProvider возвращают различные результаты?

Хотя я бы не сказал, что какие-то конкретные функциональные языки предназначены для веб-разработки, я также не сказал бы, что вы не можете заниматься веб-разработкой с функциональным языком. Я думаю, что это полностью зависит от того, какие веб-фреймворки могут быть доступны для выбранного вами языка и есть ли какие-либо веб-серверы, которые будут поддерживать этот язык.

Например, я уверен, что вы можете использовать F # вместе с ASP.Net на IIS для веб-разработки. Я сомневаюсь, что есть поддержка F # в шаблонизаторе, но вы определенно можете написать бизнес-логику на F #.

Точно так же, есть mod_haskell для Apache, который должен относительно облегчить динамический вывод с помощью haskell. Хотя я никогда не использовал это лично. В то же время, если для Apache есть mod_(erlang or scala), то для этих языков это будет так же просто.

В конечном счете, я думаю, что природа функциональных языков без сохранения состояния должна сделать ее хорошо подходящей для веб-фреймворка в стиле MVC без сохранения состояния. Тем не менее, я думаю, что все сводится к тому, какие инструменты и инфраструктуры доступны, чтобы облегчить вашу жизнь при работе с этими языками. Например, Ruby не пользовался популярностью для веб-разработки до тех пор, пока не стали популярными rails, и мне не очень нравилось делать что-либо с Python, пока я не нашел django.

33
задан SwDevMan81 18 June 2009 в 14:53
поделиться

2 ответа

Я думаю, это связано с CipherMode.CFB. См. этот пост , описывающий AesManaged :

AesManaged на самом деле просто оболочка вокруг Rinjdael Управляется некоторым кодом добавлен, чтобы убедиться, что вы не настроить алгоритм для работы в несовместимый с AES способ. Например, AesManaged не позволяет изменить размер блока. (Это также запретить использование режимов CFB и OFB из-за того, что RijndaelManaged работает с теми mode).

Обратите внимание, что если вы используете CipherMode.ECB или CipherMode.CBC, вы увидите идентичные результаты. По какой причине вам нужен CFB, а не CBC?

7
ответ дан 27 November 2019 в 18:22
поделиться

Дополнительная информация из в этом сообщении говорит:

По сути, если вы хотите использовать RijndaelManaged как AES, вам необходимо убедиться, что:
1) Размер блока установлен на 128 бит
2) Вы не используете режим CFB, или, если у вас размер обратной связи также 128 бит

Хорошо, отлично. Я добавил mEncryptionType.FeedbackSize = 128; к моему примеру выше, и я получаю CryptographicExecption:

 System.Security.Cryptography.CryptographicException не обработано
 Сообщение = "Неверные данные. \ R \ n"
 Источник = "System.Core"
 Трассировки стека:
 в System.Security.Cryptography.CapiNative.SetKeyParameter (ключ SafeCapiKeyHandle, параметр KeyParameter, значение Byte [])
 в System.Security.Cryptography.CapiNative.SetKeyParameter (ключ SafeCapiKeyHandle, параметр KeyParameter, значение Int32)
 в System.Security.Cryptography.CapiSymmetricAlgorithm.SetupKey (ключ SafeCapiKeyHandle, Byte [] iv, CipherMode cipherMode, Int32 feedbackSize)
 в System.Security.Cryptography.CapiSymmetricAlgorithm..ctor (Int32 blockSize, Int32 feedbackSize, SafeCspHandle provider, SafeCapiKeyHandle key, Byte [] iv, CipherMode cipherMode, PaddingMode paddingMode, EncryptionMode encryptionMode)
 в System.Security.Cryptography.AesCryptoServiceProvider.CreateEncryptor (ключ SafeCapiKeyHandle, Byte [] iv)
 в System.Security.Cryptography.AesCryptoServiceProvider.CreateEncryptor (ключ Byte [], Byte [] iv)
 в AESTest.Form1.Encrypt (Byte [] unencryptedData) в C: \ Documents and Settings \ nschoonmaker \ My Documents \ Visual Studio 2005 \ Projects \ AESTest \ AESTest \ Form1.cs: строка 79
 в AESTest.Form1..ctor () в C: \ Documents and Settings \ nschoonmaker \ My Documents \ Visual Studio 2005 \ Projects \ AESTest \ AESTest \ Form1.cs: строка 73
 в AESTest.Program.Main () в C: \ Documents and Settings \ nschoonmaker \ My Documents \ Visual Studio 2005 \ Projects \ AESTest \ AESTest \ Program.cs: строка 17

Что-то не так с dll System.Core, которая не поддерживает это, или мне нужно изменить что-то еще?

Кстати, если я изменю FeedbackSize на 8 для обоих, похоже, это сработает! Даже для режима CFB. Итак, я предполагаю, что мой следующий вопрос: как заставить работать 128 (и, надеюсь, это положит конец этому вопросу)?

1
ответ дан 27 November 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: