You should use UTF8, not ASCII. The reason ASCII was useful in ye olden days was that it perfectly fit into 127 characters, which was 7 bits. The problem was that old legacy 8-bit hardware did annoying things to ASCII characters when you took up the 8th bit too, since this was considered the signing bit (i.e. 0xFF is -1). These days you're much better off using UTF8 since modern processors don't screw this kind of thing up, and it provides compatibility when someone puts an ß (0xDF) or something in their string.
Just as another quick idea for those reading this, you can actually replace MD5CryptoServiceProvider with any of the standard hash functions in the .NET framework. For example, the whole SHA family will work here - just replace MD5CryptoServiceProvider with SHA1Managed, SHA256Managed, SHA384Managed or SHA512Managed and it'll work perfectly.