We have a database of hashed passwords, created via a C# windows app and queried using PHP. I wrote the following code:
private void btnHashIt_Click(object sender, System.EventArgs e) { byte [] plainText = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text); MD5CryptoServiceProvider Hasher = new MD5CryptoServiceProvider(); byte [] hash = Hasher.ComputeHash(plainText); string strHex = ""; foreach(byte b in hash) { strHex += String.Format("{0:x2}", b); } this.textBox2.Text = strHex; }The password that's generated from this app is then placed in the database. On the front end a PHP script captures the password, hashes it, then compares it to the value in the database. The trouble is they're not the same. :( After a bit of thinking and a bit of testing I realised it was because I was hashing the unicode version of the password and PHP was hashing the ASCII version. I changed the line byte [] plainText = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text); to byte [] plainText = System.Text.Encoding.ASCII.GetBytes(this.textBox1.Text); and it worked fine.