Рекомендуемая библиотека .NET-шифрования

После прочтения (еще один) post Джефф Этвуд более или менее заключая, что мы, смертные разработчики, не должны слишком заниматься шифрованием, мне остается задаться вопросом, какую библиотеку я должен использовать. Единственные две найденные мной библиотеки, которые кажутся законными, являются entlib и Bouncy Castle, но они не кажутся намного более абстракцией, чем .NET для криптографии.

Я предполагаю, что мне интересно, если есть "jQuery криптографических библиотек", который является простым, широко доверенным, открытым и хорошо документированным.

Ответ 1

edit: Ниже приведен полный список популярных криптографических библиотек из https://github.com/quozd/awesome-dotnet/blob/master/README.md#cryptography:

  • BouncyCastle - вместе с .Net System.Security.Cryptography - эталонная реализация криптографических алгоритмов на CLR.
  • HashLib - HashLib - это коллекция почти всех алгоритмов хэша, которые вы когда-либо видели, она поддерживает почти все и очень проста использовать
  • libsodium-net - libsodium для .NET - защищенная криптографическая библиотека
  • Pkcs11Interop - Управляемая .NET-оболочка для неуправляемых библиотек PKCS # 11, обеспечивающих доступ к криптографическому оборудованию
  • StreamCryptor - Шифрование и дешифрование потока с помощью libsodium и protobuf
  • SecurityDriven.Inferno -.NET crypto library. Профессионально проверенный.

Далее следует исходный ответ.


Библиотека Bouncy Castle действительно является уважаемой и зрелой библиотекой шифрования, но что не так с использованием многих фантастических функций шифрования, которые встроены прямо в платформу .NET?

System.Security.Cryptography Namespace

По моему опыту, эти реализации являются прочными, предоставляют множество опций (например, вы обычно получили Crypto API, CNG и управляемые реализации каждого алгоритма на выбор), и вы не собираетесь "ошибаться", поскольку вы только используя реализацию. Если вы немного обеспокоены тем, что вы можете использовать их неправильно, вы всегда можете следовать собственный пример кода MSDN.

Ответ 2

Bouncy Castle, по-видимому, пользуется большим уважением

Ответ 3

Вы полностью неверно поняли принцип "не выполняйте сами процедуры шифрования". Это означает: не сворачивайте свой собственный алгоритм шифрования RSA/DSA/любой другой. Это не означает, что вы не должны использовать написанный кем-то, кто знает, что они делают. На самом деле, если что-либо, добавление большего количества уровней между вами и доверенным алгоритмом будет навредить вам, а не наоборот.

Ответ 4

Блок криптографии EntLib хорошо работает для большинства требований к шифрованию/хешированию.