code: public static int FVN32hash(byte[] bytes) {
          long hash = FNV_BASIS;
          for (int i = 0; i < bytes.length; i++) {
              hash ^= 0xFF & bytes[i];
              hash *= FNV_PRIME_32;
          }
          return (int) hash;
      }
docs: Fowler-Noll-Vo 32 bit hash (FNV-1a) for bytes array.<br/> <p/> <h3>Algorithm</h3> <p/>
  <pre>
  hash = offset_basis
  for each octet_of_data to be hashed
  hash = hash xor octet_of_data
  hash = hash * FNV_prime
  return hash</pre>
  
  <h3>Links</h3> <a href="http://www.isthe.com/chongo/tech/comp/fnv/">http://www.isthe.com/chongo/tech/comp/fnv/</a><br/>
  <a href="http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function">http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function</a><br/>
  
  @param bytes bytes array to hash
  @return hash of the initial bytes array