CGC_Codes

CRC32 Hashing

Mar 13th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.47 KB | None | 0 0
  1. using System;
  2. using System.Security.Cryptography;
  3. namespace bedrock.util
  4. {
  5.     public class CRC32
  6.     {
  7.         private const int   WIDTH   = 32;
  8.         private const ulong POLY    = 0x04C11DB7;
  9.         private const ulong INIT    = 0xFFFFFFFF;
  10.         private const ulong XOROUT  = 0xFFFFFFFF;
  11.         private static readonly uint[] crctable =
  12.         {
  13.             0x00000000,     0x77073096,     0xEE0E612C,     0x990951BA,
  14.             0x076DC419,     0x706AF48F,     0xE963A535,     0x9E6495A3,
  15.             0x0EDB8832,     0x79DCB8A4,     0xE0D5E91E,     0x97D2D988,
  16.             0x09B64C2B,     0x7EB17CBD,     0xE7B82D07,     0x90BF1D91,
  17.             0x1DB71064,     0x6AB020F2,     0xF3B97148,     0x84BE41DE,
  18.             0x1ADAD47D,     0x6DDDE4EB,     0xF4D4B551,     0x83D385C7,
  19.             0x136C9856,     0x646BA8C0,     0xFD62F97A,     0x8A65C9EC,
  20.             0x14015C4F,     0x63066CD9,     0xFA0F3D63,     0x8D080DF5,
  21.             0x3B6E20C8,     0x4C69105E,     0xD56041E4,     0xA2677172,
  22.             0x3C03E4D1,     0x4B04D447,     0xD20D85FD,     0xA50AB56B,
  23.             0x35B5A8FA,     0x42B2986C,     0xDBBBC9D6,     0xACBCF940,
  24.             0x32D86CE3,     0x45DF5C75,     0xDCD60DCF,     0xABD13D59,
  25.             0x26D930AC,     0x51DE003A,     0xC8D75180,     0xBFD06116,
  26.             0x21B4F4B5,     0x56B3C423,     0xCFBA9599,     0xB8BDA50F,
  27.             0x2802B89E,     0x5F058808,     0xC60CD9B2,     0xB10BE924,
  28.             0x2F6F7C87,     0x58684C11,     0xC1611DAB,     0xB6662D3D,
  29.             0x76DC4190,     0x01DB7106,     0x98D220BC,     0xEFD5102A,
  30.             0x71B18589,     0x06B6B51F,     0x9FBFE4A5,     0xE8B8D433,
  31.             0x7807C9A2,     0x0F00F934,     0x9609A88E,     0xE10E9818,
  32.             0x7F6A0DBB,     0x086D3D2D,     0x91646C97,     0xE6635C01,
  33.             0x6B6B51F4,     0x1C6C6162,     0x856530D8,     0xF262004E,
  34.             0x6C0695ED,     0x1B01A57B,     0x8208F4C1,     0xF50FC457,
  35.             0x65B0D9C6,     0x12B7E950,     0x8BBEB8EA,     0xFCB9887C,
  36.             0x62DD1DDF,     0x15DA2D49,     0x8CD37CF3,     0xFBD44C65,
  37.             0x4DB26158,     0x3AB551CE,     0xA3BC0074,     0xD4BB30E2,
  38.             0x4ADFA541,     0x3DD895D7,     0xA4D1C46D,     0xD3D6F4FB,
  39.             0x4369E96A,     0x346ED9FC,     0xAD678846,     0xDA60B8D0,
  40.             0x44042D73,     0x33031DE5,     0xAA0A4C5F,     0xDD0D7CC9,
  41.             0x5005713C,     0x270241AA,     0xBE0B1010,     0xC90C2086,
  42.             0x5768B525,     0x206F85B3,     0xB966D409,     0xCE61E49F,
  43.             0x5EDEF90E,     0x29D9C998,     0xB0D09822,     0xC7D7A8B4,
  44.             0x59B33D17,     0x2EB40D81,     0xB7BD5C3B,     0xC0BA6CAD,
  45.             0xEDB88320,     0x9ABFB3B6,     0x03B6E20C,     0x74B1D29A,
  46.             0xEAD54739,     0x9DD277AF,     0x04DB2615,     0x73DC1683,
  47.             0xE3630B12,     0x94643B84,     0x0D6D6A3E,     0x7A6A5AA8,
  48.             0xE40ECF0B,     0x9309FF9D,     0x0A00AE27,     0x7D079EB1,
  49.             0xF00F9344,     0x8708A3D2,     0x1E01F268,     0x6906C2FE,
  50.             0xF762575D,     0x806567CB,     0x196C3671,     0x6E6B06E7,
  51.             0xFED41B76,     0x89D32BE0,     0x10DA7A5A,     0x67DD4ACC,
  52.             0xF9B9DF6F,     0x8EBEEFF9,     0x17B7BE43,     0x60B08ED5,
  53.             0xD6D6A3E8,     0xA1D1937E,     0x38D8C2C4,     0x4FDFF252,
  54.             0xD1BB67F1,     0xA6BC5767,     0x3FB506DD,     0x48B2364B,
  55.             0xD80D2BDA,     0xAF0A1B4C,     0x36034AF6,     0x41047A60,
  56.             0xDF60EFC3,     0xA867DF55,     0x316E8EEF,     0x4669BE79,
  57.             0xCB61B38C,     0xBC66831A,     0x256FD2A0,     0x5268E236,
  58.             0xCC0C7795,     0xBB0B4703,     0x220216B9,     0x5505262F,
  59.             0xC5BA3BBE,     0xB2BD0B28,     0x2BB45A92,     0x5CB36A04,
  60.             0xC2D7FFA7,     0xB5D0CF31,     0x2CD99E8B,     0x5BDEAE1D,
  61.             0x9B64C2B0,     0xEC63F226,     0x756AA39C,     0x026D930A,
  62.             0x9C0906A9,     0xEB0E363F,     0x72076785,     0x05005713,
  63.             0x95BF4A82,     0xE2B87A14,     0x7BB12BAE,     0x0CB61B38,
  64.             0x92D28E9B,     0xE5D5BE0D,     0x7CDCEFB7,     0x0BDBDF21,
  65.             0x86D3D2D4,     0xF1D4E242,     0x68DDB3F8,     0x1FDA836E,
  66.             0x81BE16CD,     0xF6B9265B,     0x6FB077E1,     0x18B74777,
  67.             0x88085AE6,     0xFF0F6A70,     0x66063BCA,     0x11010B5C,
  68.             0x8F659EFF,     0xF862AE69,     0x616BFFD3,     0x166CCF45,
  69.             0xA00AE278,     0xD70DD2EE,     0x4E048354,     0x3903B3C2,
  70.             0xA7672661,     0xD06016F7,     0x4969474D,     0x3E6E77DB,
  71.             0xAED16A4A,     0xD9D65ADC,     0x40DF0B66,     0x37D83BF0,
  72.             0xA9BCAE53,     0xDEBB9EC5,     0x47B2CF7F,     0x30B5FFE9,
  73.             0xBDBDF21C,     0xCABAC28A,     0x53B39330,     0x24B4A3A6,
  74.             0xBAD03605,     0xCDD70693,     0x54DE5729,     0x23D967BF,
  75.             0xB3667A2E,     0xC4614AB8,     0x5D681B02,     0x2A6F2B94,
  76.             0xB40BBE37,     0xC30C8EA1,     0x5A05DF1B,     0x2D02EF8D
  77.         };
  78.        
  79.         public static uint compute(byte[] block)
  80.         {
  81.             ulong c = INIT;
  82.             int len = block.Length;
  83.             int i = 0;
  84.             while (len-- > 0)
  85.             {
  86.                 c = crctable[(c ^ block[i++]) & 0xFFL] ^ (c >> 8);
  87.             }
  88.             return (uint)(c ^ XOROUT);
  89.         }
  90.  
  91.         public static uint compute(string s)
  92.         {
  93.             return compute(System.Text.Encoding.ASCII.GetBytes(s));
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment