title: Choosing a hash function for best performance
body: <p>I need to compare many files (some could be large, some are small) over the network.
  So I am planning to hash every file on every client and send only the hash value over the network.<br>
  <strong>The main goal here is performance</strong>. This implies minimal network traffic. Security is not the issue.<br>
  <strong>There should also be "zero" collisions</strong> since I don't want ever to mistakenly consider two different files as identical. Saying that, I know that theoretically there are always collisions, I just want the chance to ever practically meet them be absolutely negligible.</p>
  
  <p>So my question is: Which .net hash function is best for this task?  </p>
  
  <p>I was thinking to use a buffered reader and <code>MD5CryptoServiceProvider</code> (since CNG may not be available on all clients). </p>
  
  <p>Is there a way to get better performance than that? (perhaps using some external library?)</p>