public static uint HashFilename(string filename) { //if (filename.Length > 12) // filename = filename.Substring(0, 12); filename = filename.ToUpperInvariant(); int l = filename.Length; int a = l >> 2; if ((l & 3) != 0) { filename += (char)(l - (a << 2)); int i = 3 - (l & 3); while (i-- != 0) { filename += filename[a << 2]; } } return(CRC32.CalculateCrc(Encoding.ASCII.GetBytes(filename))); }