It seems that MD5Digest in BouncyCastle and hashlib.md5 in Python produce different results.
Why is that?
C#:
static string Hash(string str)
{
var utf = System.Text.Encoding.UTF8.GetBytes(str);
var md5 = new Org.BouncyCastle.Crypto.Digests.MD5Digest();
var hash = new byte[16];
md5.BlockUpdate(utf, 0, utf.Length);
md5.Finish();
md5.DoFinal(hash, 0);
return Convert.ToBase64String(hash);
}
Console.WriteLine(Hash("MRJAf16c0eda-c449-4d5d-8250-faa2b2c739d8.zipPHMD"));
// jHaqLPD7eECs5yRj930EYA==
Python:
import hashlib, base64
def Hash(str):
utf = str.encode("utf-8")
md5 = hashlib.md5()
md5.update(utf)
hash = md5.digest()
return base64.b64encode(hash).decode()
print(Hash("MRJAf16c0eda-c449-4d5d-8250-faa2b2c739d8.zipPHMD"))
# +0soCxXP9qWSUFz/oJ8I9Q==
Even though the hashes should match.