Question: The question is pretty much self-explanatory. I Googled many sites, many methods, tried many encodings, but I can't get it to match.

I'm trying to make the string "asdasd" match. (<http://www.fileformat.info/tool/hash.htm?text=asdasd>)

Answer: 
Try this

```
using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}

```
I just spent several hours trying to get a .NET hash function to match PHP's Crypt function. Not fun. 

There are multiple challenges here, since the PHP implementation of Crypt returns a base64 encoded string, and doesn't do multiple hashing iterations (e.g. 5000 is default for Crypt.) I was not able to get similar outputs from .NET using several libraries, until I found CryptSharp. It accepts a salt similar to PHP's (or the original C) function (e.g. `"$6$round=5000$mysalt"`). Note that there is no trailing $, and that if you don't provide a salt it will autogenerate a random one.

You can find CryptSharp here:
<http://www.zer7.com/software.php?page=cryptsharp>

Good background reading:
- <http://www.akkadia.org/drepper/SHA-crypt.txt>