Search code examples
c#unmanagedhashmanaged

Which one to use: Managed vs. NonManaged hashing algorithms


In a regular C# application which class to use for hashing: xxxManaged or xxx (i.e SHA1Managed vs SHA1) and why?


Solution

  • The Non-managed hashes which end in ***Cng, e.g. 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.