Using raw hash functions to authenticate passwords is as
naive as using unsalted hash functions. Don’t.Thomas Ptacek

BCrypt.net is an implementation of OpenBSD's Blowfish-based
password hashing code, described in "A
Future-Adaptable Password Scheme" by Niels Provos and
David
Mazières. It is a direct port of jBCrypt by
Damien Miller,
and is thus released under the same BSD-style license. The code is
fully managed and should work with any little-endian CLI
implementation -- it has been tested with Microsoft .NET and
Mono.

Why BCrypt?

Most popular password storage schemes are based on fast
hashing algorithms such as MD5 and SHA-1. BCrypt is a
computationally expensive adaptive hashing scheme which utilizes
the Blowfish block cipher. It is ideally suited for password
storage, as its slow initialization time severely limits the
effectiveness of brute force password cracking attempts. How much
overhead it adds is configurable (that's the adaptive
part), so the computational resources required to test a password
candidate can grow along with advancements in hardware
capabilities.

Usage

Using BCrypt in your code is very simple:

// Pass a logRounds parameter to GenerateSalt to explicitly specify the
// amount of resources required to check the password. The work factor
// increases exponentially, so each increment is twice as much work. If
// omitted, a default of 10 is used.
string hashed = BCrypt.HashPassword(password, BCrypt.GenerateSalt(12));
// Check the password.
bool matches = BCrypt.CheckPassword(candidate, hashed);

The source code is available via the links below. You can
download the packaged version, which includes an NUnit-based test
suite, or download the source directly via
BCrypt.cs.