title: Good Hash function? (32-bit too small, 64-bit too large)
body: <p>I need to generate a hash value used for uniqueness of many billions of records in Java.  Trouble is, I only have 16 numeric digits to play with.  In researching this, I have found algorithms for 32-bit hash, which return Java integers.  But this is too small, as it only has a range of +/ 2 billion, and have will have more records that that.  I cannot go to a 64-bit hash, as that will give me numeric values back that are too large (+/ 4 quintillion, or 19 digits).  Trouble is, I am dealing with a legacy system that is forcing me into a static key length of 16 digits.</p>
  
  <p>Suggestions?  I know no hash function will guarantee uniqueness, but I need a good one that will fit into these restrictions.</p>
  
  <p>Thanks</p>