


crc16(n)             Cyclic Redundancy Checks            crc16(n)


______________________________________________________________________________

NAME
       crc16 - Perform a 16bit Cyclic Redundancy Check

SYNOPSIS
       package require Tcl  8.2

       package require crc16  ?1.1.1?

       ::crc::crc16  ?-format format? ?-seed value? ?-implementation procname?
       message

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation  procname?
       -filename file

       ::crc::crc-ccitt  ?-format format? ?-seed value? ?-implementation proc-
       name? message

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation  proc-
       name? -filename file

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       message

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -filename file

_________________________________________________________________

DESCRIPTION
       This  package  provides a Tcl-only implementation of the CRC algorithms
       based   upon   information    provided    at    http://www.microconsul-
       tants.com/tips/crc/crc.txt There are a number of permutations available
       for calculating CRC checksums and this package can handle all of  them.
       Defaults are set up for the most common cases.

COMMANDS
       ::crc::crc16 ?-format format? ?-seed value? ?-implementation procname?
       message

       ::crc::crc16  ?-format format? ?-seed value? ?-implementation procname?
       -file- name file

       ::crc::crc-ccitt  ?-format  format?  ?-seed  value? ?-implementation
       procname? message

       ::crc::crc-ccitt  ?-format  format?  ?-seed  value? ?-implementation
       procname? -filename file

       ::crc::xmodem  ?-format  format? ?-seed value? ?-implementation
       procname? mes- sage





crc                           1.1.1                             1





crc16(n)             Cyclic Redundancy Checks            crc16(n)


       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -file- name file
              The  command takes either string data or a file name and returns
              a checksum value calculated using the CRC algorithm. The command
              used  sets up the CRC polynomial, initial value and bit ordering
              for the desired standard checksum  calculation.  The  result  is
              formatted  using  the  format(n)  specifier  provided  or  as an
              unsigned integer (%u) by default.

              A number of common polynomials are in use with the CRC algorithm
              and  the  most commonly used of these are included in this pack-
              age. For convenience each of these has a command  alias  in  the
              crc namespace.

              It is possible to implement the CRC-32 checksum using this crc16
              package as the implementation is sufficiently generic to  extend
              to  32 bit checksums. As an example this has been done already -
              however this is not the fastest method to implement  this  algo-
              rithm in Tcl and a separate crc32 package is available.


OPTIONS
       -filename name
              Return a checksum for the file contents instead of for parameter
              data.

       -format string
              Return the checksum using an alternative format template.

       -seed value
              Select an alternative seed value for the  CRC  calculation.  The
              default  is 0 for the CRC16 calculation and 0xFFFF for the CCITT
              version.  This can be useful for calculating the  CRC  for  data
              structures  without  first converting the whole structure into a
              string. The CRC of the previous member can be used as  the  seed
              for  calculating the CRC of the next member. It is also used for
              accumulating a checksum from fragments of a  large  message  (or
              file)

       -implementation procname
              This hook is provided to allow users to provide their own imple-
              mentation (perhaps a C compiled extension). The procedure  spec-
              fied  is called with two parameters. The first is the data to be
              checksummed and the second is the  seed  value.  An  integer  is
              expected as the result.

              The  package provides some implementations of standard CRC poly-
              nomials for the XMODEM, CCITT and the usual CRC-16 checksum. For
              convenience,  additional  commands  have been provided that make
              use of these implementations.


EXAMPLES
       % crc::crc16 "Hello, World!"



crc                           1.1.1                             2





crc16(n)             Cyclic Redundancy Checks            crc16(n)


       64077



       % crc::crc-ccitt "Hello, World!"
       26586



       % crc::crc16 -format 0x%X "Hello, World!"
       0xFA4D



       % crc::crc16 -file crc16.tcl
       51675


AUTHORS
       Pat Thoyts

BUGS, IDEAS, FEEDBACK
       This document, and the package it describes, will  undoubtedly  contain
       bugs and other problems.  Please report such in the category crc of the
       Tcllib  SF  Trackers  [http://sourceforge.net/tracker/?group_id=12883].
       Please  also  report any ideas for enhancements you may have for either
       package and/or documentation.

SEE ALSO
       cksum(n), crc32(n), sum(n)

KEYWORDS
       checksum, cksum, crc,  crc16,  crc32,  cyclic  redundancy  check,  data
       integrity, security

CATEGORY
       Hashes, checksums, and encryption

COPYRIGHT
       Copyright (c) 2002, Pat Thoyts

















crc                           1.1.1                             3


