CRC32

An MSDOS and Win32 MFC-based application by Erik Burd

I created this program to be a testing utility for one of my coworkers, who needed to compare the files on a burned CD image against the files that were actually installed. Since this is very intensive and takes a very long time, I decided to write it to make his life a bit easier. He uses it every day, and can get results within minutes.

I decided to place it up here on my web site to make this simple, yet useful tool, available for all users. When I was looking for similar utility programs, I didn't find any that would fit my needs. This is one reason that motivated me to write my own program.

There are two versions available for downloading:

Click here to download the Windows MFC version CRC32WND.EXE (42K).

Click here to download the MSDOS version CRC32DOS.EXE (53K).

The instructions for using the programs can be viewed from these links:

Click here for the Windows MFC version instructions

Click here for the MSDOS version instructions


What is a CRC and why are they used?

A CRC (Cyclic Redundancy Check) is a digital "fingerprint" for a file. In most cases, a 32-bit CRC value is used, although you can also calculate a 16-bit CRC in the same way. CRC values are used in digital communication network protocols like TCP/IP to verify that there were no errors during transmission.

This allows someone to use a simple 32-bit number (like 6a7b22dc for example) that will represent the entire contents of the file. If any change is made to the file, the CRC value will change. This in turn would indicate that its not the same file.

If you want more information about Cyclic Redundancy Checks, click here to look at this article written by Jeff Prosise on PC Magazine's web site which gives a good introduction.

The CRC values calculated by CRC32 File Processing are identical to the CRC values that are calculated by the very popular program WinZip. The output is always displayed in hexadecimal notation, which is the most common way of representing the number. You can convert it to a decimal number using the Calculator applet in Windows. I'm planning on adding a number base feature in the next version.

This is the polynomial that the program uses to calculate to 32-bit CRC values:

x32 + x31 + x30 + x28 + x27 + x25 + x24 + x22 + x21 + x20 + x16 + x10 + x9 + x5 = 0

This is the representation of the polynomial in a couple of number bases:

Decimal (base 10):        3988292384

Hexadecimal (base 16): EDB88320

Binary (base 2):             11101101101110001000001100100000