Exemplo n.º 1
0
        /// <summary>
        /// Computes the CRC32 checksum of a file using the file path. 
        /// The actual CRC32 algorithm is described in RFC 1952
        /// (GZIP file format specification version 4.3), this is also
        /// the specification for the algorithm used in java.util.zip.
        /// </summary>
        /// <param name="filePath">the physical path of the file on the ESS</param>
        /// <returns>the string form of the calculated CRC32 checksum</returns>
        public static string ComputeCRC32(string filePath)
        {
            CRC_1952 crc = new CRC_1952();

            FileStream fs = null;
            ulong csum = 0L;
            try
            {
            fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            byte[] buf = new byte[512];
            int byteCount = fs.Read(buf, 0, 512);
            while (byteCount > 0)
            {
               csum =  crc.updateCRC(csum, buf, byteCount);
                byteCount = fs.Read(buf, 0, 512);
            }

            fs.Close();
            return csum.ToString("X");
            }
            catch (IOException ex)
            {
            throw new IOException("Exception thrown computing CRC32 checksum using the file path", ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Computes the CRC32 checksum of a file using the data array
        /// The actual CRC32 algorithm is described in RFC 1952
        /// (GZIP file format specification version 4.3), this is also
        /// the specification for the algorithm used in java.util.zip.
        /// </summary>
        /// <param name="data">the array of data</param>
        /// <returns>the string form of the calculated CRC32 checksum</returns>
        public static string ComputeCRC32(byte [] data)
        {
            CRC_1952 crc = new CRC_1952();
            ulong csum = 0L;
            try
            {
            sbyte[] sdata = new sbyte[data.Length];
            for (int i = 0; i < data.Length; i++)
                sdata[i] = (sbyte)data[i];

            csum = crc.updateCRC(csum, data,data.Length);
            return csum.ToString("X");
            }
            catch (IOException ex)
            {
            throw new IOException("Exception thrown computing CRC32 checksum using the data array", ex);
            }
        }