Это никак не связано с производительностью - SHA256CryptoServiceProvider
использует проверенный FIPS 140-2 проверенный *1003* (FIPS = Федеральный стандарт обработки информации) провайдер криптографических услуг (CSP), а SHA256Managed
- нет.SHA256Managed
- это чисто управляемая реализация, в то время как SHA256CryptoServiceProvider
, по-видимому, делает то же самое, но оборачивает CryptoAPI.
Это имеет большие последствия, если вы собираетесь работать с федеральными системами США или многими государственными системами, как этотребование к поставщикам программного обеспечения.По мнению NIST, использование не проверенного FIPS криптографического модуля, такого как реализация SHA256Managed
, ничем не отличается от использования какого-либо шифрования вообще.
Если вам не нужна проверка FIPS, тогдаSHA256Managed
в порядке.
Все, что заканчивается в Cng, означает «Crytographic API: Next Generation», которое относится к более новым протоколам, которые правительство США называет криптографическими алгоритмами Suite B, но независимо от версии платформы .Net.до Vista / Server 2008 не поддерживается).
Поэтому используйте алгоритм и реализацию, подходящую для того, что вы защищаете.Вы будете ограничены тем, какую версию .Net framework вы используете, какую операционную систему (ы), на которой работает ваш код, и необходимость использования проверенных модулей FIPS 140-2 / 140-3 (выпускается в 2011 году),Если не поддерживается поддерживаемый класс .Net Framework для нужной комбинации, доступны сторонние модули, и вы также можете раскрыться и при необходимости использовать неуправляемый CAPI.
Если у вас бессонница, вы можетеможно найти лекарство в http://csrc.nist.gov/groups/STM/cmvp/standards.html#02