title: A minimal hash function for C?
body: <p>I can't use boost:hash because I have to stick with C and can't use C++.</p>
  
  <p>But, I need to hash a large number (10K to 100k) of tokens strings (5 to 40 bytes length) so that search within those are fastest.</p>
  
  <p>MD5, SHA1 or any long hash function seems too heavy for a simple task, I am not doing cryptography. Plus there is the storage and computing cost.</p>
  
  <p>Therefore my question:</p>
  
  <ol>
  <li><p>What might be the simplest hash algorithm that will ensure collision prevention in most practical cases.</p></li>
  <li><p>How many bit to use for the hash value? I am developing for 32 bit systems. Does hash algorithm in Perl/Python use 32 bit hashes too? Or do I have to jump to 64?</p></li>
  <li><p>Regarding implementation of hash tables in common scripting languages: does the implementation check for collisions or can I avoid that part altogether?</p></li>
  </ol>