いろいろ言われている話だし、記事もたくさんあるのだけど復習とメモがてら。
まずMSDNを読もう。

要はバイト列(byte[])だろうとストリームだろうと取れるのだけど、単に小さいファイルのmd5値を出したいのであればbyte[]を読ませたほうがコーディングが楽だと思った。

というわけでワンライナーで。

string md5hash = BitConverter.ToString(MD5.Create().ComputeHash(File.ReadAllBytes(@"C:¥hoge.exe"))).ToLower().Replace("-", "");

File.ReadAllBytesはファイルパスからbyte型の配列としてファイルを読み込むので、これをMD5.ComputeHashに渡す。
ちなみに戻ってくるのはbyte列なのでこれをBitConverterでstringに直して、そんでもってハイフンを消したり。

主にここらへんを参考にしました。