In a regular C# application which class to use for hashing: xxxManaged
or xxx
(i.e SHA1Managed
vs SHA1
) and why?
The Non-managed hashes which end in ***Cng
, ie SHA256Cng, will also have platform restrictions. They are quite a bit faster than the managed alternatives, but will fail at runtime on Windows XP, for example. If you know your program will always be run on Windows 7, Vista SP1, or 2008, however, they will generally perform quite a bit better than the managed versions, even with the native interop overhead.
If you're writing a general purpose program, the ***Managed
classes will be easier to work with, as they will always work.