NAME
    Mail::Message::Checksum - utilities for checksum.

SYNOPSIS
       use Mail::Message::Checksum;
       $cksum  = new Mail::Message::Checksum;
       $md5sum = $cksum->md5( \$string );

METHODS
  new()
    constructor. It checks we can use MD5 perl module or we need to use
    external programs such as "md5", "cksum", et.al.

  md5(\$string)
    same as md5_str_ref().

  md5_str_ref(\$string)
    return the md5 checksum of the specified string $string.

  md5_file($file)
    return the md5 checksum of the specified file.

  cksum1($file)
    "not implemented".

    This is a 16-bit checksum. The algorithm used by historic BSD systems as
    the sum(1) algorithm and by historic AT&T System V UNIX systems as the
    sum algorithm when using the "-r" option.

  cksum2($file)
    return the traditional checksum of the given $file.

    This is a 32-bit checksum. The algorithm used by historic AT&T System V
    UNIX systems as the default sum algorithm.

    See POSIX 1003.2 for more details.

  crc($file)
    "not implemented".

    The default CRC used is based on the polynomial used for CRC error
    checking in the networking standard ISO 8802-3:1989 The CRC checksum
    encoding is defined by the generating polynomial:

      G(x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 +
             x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1

    Mathematically, the CRC value corresponding to a given file is defined
    by the following procedure:

    The n bits to be evaluated are considered to be the coefficients of a
    mod 2 polynomial M(x) of degree n-1. These n bits are the bits from the
    file, with the most significant bit being the most signif- icant bit of
    the first octet of the file and the last bit being the least significant
    bit of the last octet, padded with zero bits (if necessary) to achieve
    an integral number of octets, followed by one or more octets
    representing the length of the file as a binary val- ue, least
    significant octet first. The smallest number of octets capable of
    representing this integer are used.

    M(x) is multiplied by x^32 (i.e., shifted left 32 bits) and divided by
    G(x) using mod 2 division, producing a remainder R(x) of degree <= 31.

    The coefficients of R(x) are considered to be a 32-bit sequence.

    The bit sequence is complemented and the result is the CRC.

ACCESS METHODS
  set_mode($mode)
    set mode.

  get_mode()
    get current mode. return unknown if not set.

CODING STYLE
    See "http://www.fml.org/software/FNF/" on fml coding style guide.

AUTHOR
    Ken'ichi Fukamachi

COPYRIGHT
    Copyright (C) 2001,2002,2003,2004,2005,2006 Ken'ichi Fukamachi

    All rights reserved. This program is free software; you can redistribute
    it and/or modify it under the same terms as Perl itself.

HISTORY
    Mail::Message::Checksum first appeared in fml8 mailing list driver
    package. See "http://www.fml.org/" for more details.

    Algorithm used here is based on NetBSD cksum library (C program).

