What is a CRC?

Generate

Verify

Include/Exclude

Key Files

Aliases

Registration

A Note on MD5

Disclaimer


What is a CRC?

CRC is an acronym for 'Cyclical Redundancy Code.'   They are popular and robust method used to provide error checking in digital data.  Typically, a CRC is a 16 or 32 bit number represented in hexidecimal.  If the data used to generate the CRC is altered, it is very unlikely that it will have the same CRC.  Because of their greater length, 32 bit CRCs are more reliable than the 16 bit variety.  A 32 bit CRC allows for over 4 BILLION combinations whereas a 16 bit allows for just over 65,000.

WinCRC works with files as the input data and can generate the most popular CRCs.  In addition it also does checksums and message digests.


Hexidecimal

A number represented in base 16 rather than base 10 (decimal).  Hexidecimal digits are numbered 0 thru 9, A, B, C, D, E, and F.


Generate

Generates CRCs for all selected files.  If a Key File has been selected, and Use Key File is checked, the filenames and their CRCs are written to the Key file.  If Include Subdirectories is checked, WinCRC will generate CRCs for files which match the File Inclusion Mask in all the subdirectories of the current directory.

When using a key file, two additional options are presented:  Overwrite existing key file and Only File Names in Key File.  Normally, WinCRC appends new data to existing key files, and includes the full path name of selected file.  Click the appropriate check box to override the standard behavior.


Verify

Using the Key File the user has selected, Verify generates CRCs for all files listed in the key file and then compares the new CRCs to the CRCs recorded in the key file.  If the two CRCs don't match, the file has most likely been corrupted.  The user is alerted and the error is written to the error file WINCRC.ERR.

To use Verify, you must have selected a key file and checked Use Key File.


Include/Exclude

Include and exclude are used to set up a File Inclusion Mask.  They allow you to specify groups of files to generate CRCs for by using DOS wildcards.  When you first start WinCRC, there are no files included.  Although it's possible to select files in the file list box individually, many times you want all files of a certain type (i.e. all .EXE files), or all files that start with certain letters.  You can do this with Include and Exclude.

WinCRC will generate CRCs for all files that match the Include file specifications providing they don't match any Exclude file specifications.  For example, say you want to obtain CRCs for all files with the .EXE or .COM extensions.  In the edit box simply type *.EXE    *.COM and  then click Generate.

Exclude can be used to remove some of the files that may have been included.  Continuing with the above example, if you enter A*.EXE and then click Generate, WinCRC will generate CRCs for all files with the .EXE or .COM extensions except those .EXEs that begin with the letter 'A'.

WinCRC will generate CRCs for those files that:

*	Have been specifically selected by the user.

*	Match an Include file specification but do NOT

match an Exclude file specification.


DOS Wildcards

Special characters which DOS uses to match a single character or a sequence of multiple characters.  The two DOS wildcard characters are: '?' which matches one character; and '*' which matches any sequence of zero or more characters.


Checksums & Message Digests

Like CRCs checksums and message digests are used for error checking.  Checksums consist of 8, 16, or 32 bit numbers; message digests are 128 bit numbers.

As their name implies, checksums are  'sums.'  In other words, each incoming byte is added to the next until all the incoming data has been added up.   Since it's possible (and even easy) to add different numbers and get the same result, checksums are not as reliable as CRCs (which use modulo division).

Message digests on the other hand are (theoretically) extremely secure -- a least no one has derived a simple method of fooling them.  At 128 bits in length it is conjectured that it is not computationally possible to create two files with the same message digest.  Of course there is always random chance...


Key Files

WinCRC uses Key Files to record selected file's CRCs.  The key file can then be used to verify those same files at a later time.  Should any files not have the same CRC, the user is alerted and the name of the file and the error is written to a special error file called WINCRC.ERR.

Key files usually have the extension .KEY and are standard ASCII files that can be viewed using most editors (including Windows Notepad.)  Before WinCRC uses any key file, the file is checked to see if it has a valid header.  This helps to prevent accidentally overwriting non-WinCRC files.


Aliases

Depending on where you are in the world and what applications you use, CRCs may be known by different names.  The following list shows the most common CRC names and their aliases.

Common Name	Aliases

--------------------------------------------------------------------

CRC-CCITT	SDLC, IBM

CRC-32	ETHERNET

ZModem  	PK-Zip, ARJ

CRC-16	ARC, LHA, Zoo

CRC-CCITT Reverse	SDLC Reverse, IBM Reverse


Registration

WinCRC is not a free or public domain program.  It is distributed as shareware.  You may use it for a period of 30 days to try it out after which you must register the program.   The more people register the program, the more incentive I have to update it with new CRC methods and user suggestions.  Makes sense, huh.

To register send a check or money order for  US $15 payable to Eric Roe to:

Eric Roe

WinCRC Registration

3137 Briarcliff Avenue

Vestal, New York  13850-2859

If you've got comments and/or suggestions on how to improve WinCRC, you can drop me a line at the above address.  I can also be reached via e-mail at: ericroe@aol.com.


A Note on MD5

As of this version of WinCRC, my implementation of the MD5 message digest algorithm has not been verified against any other software which generates MD5 digests.  If you get different digests for the same file this is most likely the reason.  Please let me know so I can correct any future versions of WinCRC if needed.  Thanks.


Disclaimer

This software, WINCRC.EXE and its associated documentation and help files, is provided on an "as is" basis without warranty of any kind, express or implied, including, but not limited to, implied warranties of merchantability, fitness for a particular purpose, functionality, data integrity, or data protection.  Persons using this software bear all risk as to the quality and performance of the software.  The author will not be liable for direct or indirect damages or data loss, even if the author was informed of the possibility of such damages or data loss.

Suggestions, improvements, diagrams, and other documents or documentation sent to the author become property of the author.  No reimbursements or remuneration will be made.