code: public static int universal(char[] key, int mask, int[] tab) {
  		int hash = key.length, i, len = key.length;
  		for (i = 0; i < (len << 3); i += 8) {
  			char k = key[i >> 3];
  			if ((k & 0x01) == 0) {
  				hash ^= tab[i + 0];
  			}
  			if ((k & 0x02) == 0) {
  				hash ^= tab[i + 1];
  			}
  			if ((k & 0x04) == 0) {
  				hash ^= tab[i + 2];
  			}
  			if ((k & 0x08) == 0) {
  				hash ^= tab[i + 3];
  			}
  			if ((k & 0x10) == 0) {
  				hash ^= tab[i + 4];
  			}
  			if ((k & 0x20) == 0) {
  				hash ^= tab[i + 5];
  			}
  			if ((k & 0x40) == 0) {
  				hash ^= tab[i + 6];
  			}
  			if ((k & 0x80) == 0) {
  				hash ^= tab[i + 7];
  			}
  		}
  		return (hash & mask);
  	}
docs: Universal Hashing
  
  @param key 字节数组
  @param mask 掩码
  @param tab tab
  @return hash值