Вы не можете исправить , так как тип CspParameters
на самом деле не , поддерживаемый Mono.
Причина в том, что этот тип используется для передачи дополнительной информации между (управляемым) кодом BCL и CSP CryptoAPI (поставщиком услуг шифрования).Поскольку Mono использует только управляемый код, а CryptoAPI недоступен за пределами Windows, класс CspParameters
в основном является заглушкой, определение без кода.
В частности, тип PasswordDeriveBytes
немного особенным.Он реализует стандарт PKCS # 5 v1.5, который поддерживает Mono, но также добавляет несколько расширений Microsoft (нарушая спецификацию), в том числе одно из них полностью сломано (по соображениям безопасности).При использовании PasswordDeriveBytes
.
вы должны быть очень осторожны. Корпус для CryptDeriveKey
еще более плохо продуман.Это не имеет ничего общего с (любой версией) PKCS # 5, как и остальная часть PasswordDeriveBytes
(т.е. это не основано на стандартах).Он просто перенаправляет ваши параметры в CryptoAPI, используя CSP по умолчанию.Некоторые основные проблемы возникают из-за этого:
AFAIK Microsoft никогда не публиковала алгоритмы, которые они используют для получения ключей в их CSP.Я не могу сказать, если это даже безопасно, их расширения PKCS # 5 не были;
CSP «по умолчанию» может быть изменен (например, приложениями) на значение по умолчанию не-MicrosoftCSP (например, CSP Hardward / Smartcard).Алгоритм извлечения ключей, предоставляемый этими CSP, неизвестен (надеюсь, они перезванивают в MS CSP);
CryptoAPI и CSP доступны только в Windows и отличаются версией Windows / экспортируемость, а не версия .NET Framework.
Вам следует избегать использования PasswordDeriveBytes.CryptDeriveKey
даже в Windows, если вы не можете гарантировать, что CSP по умолчанию (и останется) одинаковым для всехкомпьютеры, на которых работает ваше приложение.
В заключение, во избежание проблем совместимости / безопасности, я настоятельно рекомендую вам использовать более новую версию PKCS # 5 v2, которую Mono / MonoTouch / Microsoft использует как System.Security.Cryptography.Rfc2898DeriveBytes
.