Hash

使用 XOR 移位對散列字節有效嗎?

  • November 27, 2016

異或移位字節以產生雜湊/校驗和是否有效?我找不到任何證據表明它比 CRC32 碰撞更多。

這段程式碼的執行速度似乎比 Java 的 util.zip.CRC32 類快 40 倍。

public static long hash64( byte[] bytes )
   {
   long x = 1;

   for ( int i = 0; i < bytes.length; i++ )
       {
       x ^= bytes[ i ];
       x ^= ( x << 21 );
       x ^= ( x >>> 35 );
       x ^= ( x << 4 );
       }

   return x;
   }


public static int hash32( byte[] bytes )
   {
   int x = 1;

   for ( int i = 0; i < bytes.length; i++ )
       {
       x ^= bytes[ i ];
       x ^= ( x << 13 );
       x ^= ( x >>> 17 );
       x ^= ( x << 5 );
       }

   return x;
   }

引用自:https://crypto.stackexchange.com/questions/41843