manpagez: man pages & more
man Crypt::Digest(3)
Home | html | info | man
Crypt::Digest(3)      User Contributed Perl Documentation     Crypt::Digest(3)



NAME

       Crypt::Digest - Generic interface to hash/digest functions


SYNOPSIS

          ### Functional interface:
          use Crypt::Digest qw( digest_data digest_data_hex digest_data_b64 digest_data_b64u
                                digest_file digest_file_hex digest_file_b64 digest_file_b64u );

          my $data = 'data string';
          my $filename = 'filename.dat';
          open my $filehandle, '<:raw', $filename or die "cannot open $filename: $!";

          # calculate digest from string/buffer
          my $digest_raw  = digest_data('SHA256', $data);
          my $digest_hex  = digest_data_hex('SHA256', $data);
          my $digest_b64  = digest_data_b64('SHA256', $data);
          my $digest_b64u = digest_data_b64u('SHA256', $data);
          # calculate digest from file
          my $file_digest_raw  = digest_file('SHA256', $filename);
          my $file_digest_hex  = digest_file_hex('SHA256', $filename);
          my $file_digest_b64  = digest_file_b64('SHA256', $filename);
          my $file_digest_b64u = digest_file_b64u('SHA256', $filename);
          # calculate digest from filehandle
          my $fh_digest_raw  = digest_file('SHA256', $filehandle);

          ### OO interface:
          use Crypt::Digest;

          my $d = Crypt::Digest->new('SHA1');
          $d->add('any data');
          $d->addfile('filename.dat');
          $d->addfile($filehandle);
          my $result_raw  = $d->digest;     # raw bytes
          my $result_hex  = $d->hexdigest;  # hexadecimal form
          my $result_b64  = $d->b64digest;  # Base64 form
          my $result_b64u = $d->b64udigest; # Base64 URL-safe form


DESCRIPTION

       Provides an interface to various hash/digest algorithms.

       All functions and methods return raw bytes unless the method name
       explicitly ends in "_hex", "_b64", or "_b64u". Invalid algorithm names
       croak.


EXPORT

       Nothing is exported by default.

       You can export selected functions:

         use Crypt::Digest qw( digest_data digest_data_hex digest_data_b64 digest_data_b64u
                               digest_file digest_file_hex digest_file_b64 digest_file_b64u );

       Or all of them at once:

         use Crypt::Digest ':all';


FUNCTIONS

       All functions take the algorithm name as the first argument. Supported
       values are:

        'CHAES', 'MD2', 'MD4', 'MD5', 'RIPEMD128', 'RIPEMD160',
        'RIPEMD256', 'RIPEMD320', 'SHA1', 'SHA224', 'SHA256',
        'SHA384', 'SHA512', 'SHA512_224', 'SHA512_256', 'Tiger192', 'Whirlpool',
        'SHA3_224', 'SHA3_256', 'SHA3_384', 'SHA3_512',
        'Keccak224', 'Keccak256', 'Keccak384', 'Keccak512',
        'BLAKE2b_160', 'BLAKE2b_256', 'BLAKE2b_384', 'BLAKE2b_512',
        'BLAKE2s_128', 'BLAKE2s_160', 'BLAKE2s_224', 'BLAKE2s_256'

        (or any <NAME> for which there is a Crypt::Digest::<NAME> module)

   digest_data
       Joins all arguments into a single string and returns the digest for the
       selected algorithm encoded as a binary string.

       Data arguments are converted to byte strings using Perl's usual scalar
       stringification. Defined scalars, including numbers and
       string-overloaded objects, are accepted. "undef" is treated as an empty
       string and may emit Perl's usual "uninitialized value" warning. The
       same rules apply to "digest_data_hex", "digest_data_b64", and
       "digest_data_b64u".

        my $digest_raw = digest_data('SHA256', 'data string');
        #or
        my $digest_raw = digest_data('SHA256', 'any data', 'more data', 'even more data');

   digest_data_hex
       Joins all arguments into a single string and returns the digest for the
       selected algorithm encoded as a hexadecimal string.

        my $digest_hex = digest_data_hex('SHA256', 'data string');
        #or
        my $digest_hex = digest_data_hex('SHA256', 'any data', 'more data', 'even more data');

   digest_data_b64
       Joins all arguments into a single string and returns the digest for the
       selected algorithm encoded as a Base64 string, with trailing '='
       padding.

        my $digest_b64 = digest_data_b64('SHA256', 'data string');
        #or
        my $digest_b64 = digest_data_b64('SHA256', 'any data', 'more data', 'even more data');

   digest_data_b64u
       Joins all arguments into a single string and returns the digest for the
       selected algorithm encoded as a Base64 URL-safe string (see RFC 4648
       section 5).

        my $digest_b64url = digest_data_b64u('SHA256', 'data string');
        #or
        my $digest_b64url = digest_data_b64u('SHA256', 'any data', 'more data', 'even more data');

   digest_file
       Reads a file given by a filename or filehandle and returns its digest
       encoded as a binary string.

        my $digest_raw = digest_file('SHA256', 'filename.dat');
        #or
        my $filehandle = ...; # existing binary-mode filehandle
        my $digest_raw = digest_file('SHA256', $filehandle);

   digest_file_hex
       Reads a file given by a filename or filehandle and returns its digest
       encoded as a hexadecimal string.

        my $digest_hex = digest_file_hex('SHA256', 'filename.dat');
        #or
        my $filehandle = ...; # existing binary-mode filehandle
        my $digest_hex = digest_file_hex('SHA256', $filehandle);

       Note: The filehandle must be in binary mode before you pass it to
       addfile().

   digest_file_b64
       Reads a file given by a filename or filehandle and returns its digest
       encoded as a Base64 string, with trailing '=' padding.

        my $digest_b64 = digest_file_b64('SHA256', 'filename.dat');
        #or
        my $filehandle = ...; # existing binary-mode filehandle
        my $digest_b64 = digest_file_b64('SHA256', $filehandle);

   digest_file_b64u
       Reads a file given by a filename or filehandle and returns its digest
       encoded as a Base64 URL-safe string (see RFC 4648 section 5).

        my $digest_b64url = digest_file_b64u('SHA256', 'filename.dat');
        #or
        my $filehandle = ...; # existing binary-mode filehandle
        my $digest_b64url = digest_file_b64u('SHA256', $filehandle);


METHODS

       Unless noted otherwise, assume $d is an existing digest object created
       via "new", for example:

        my $d = Crypt::Digest->new('SHA256');

   new
       Constructor, returns a reference to the digest object.

        my $d = Crypt::Digest->new($name);
        # $name could be: 'CHAES', 'MD2', 'MD4', 'MD5', 'RIPEMD128', 'RIPEMD160',
        #                 'RIPEMD256', 'RIPEMD320', 'SHA1', 'SHA224', 'SHA256', 'SHA384',
        #                 'SHA512', 'SHA512_224', 'SHA512_256', 'SHA3_224', 'SHA3_256',
        #                 'SHA3_384', 'SHA3_512', 'Keccak224', 'Keccak256', 'Keccak384',
        #                 'Keccak512', 'BLAKE2b_160', 'BLAKE2b_256', 'BLAKE2b_384',
        #                 'BLAKE2b_512', 'BLAKE2s_128', 'BLAKE2s_160', 'BLAKE2s_224',
        #                 'BLAKE2s_256', 'Tiger192', 'Whirlpool'
        #
        # or any <FUNCNAME> for which there is a Crypt::Digest::<FUNCNAME> module

   clone
       Creates a copy of the digest object state and returns a reference to
       the copy.

        $d->clone();

   reset
       Resets the digest object state and returns the digest object itself.

        $d->reset();

   add
       Appends all arguments to the message. Returns the digest object itself.

       Each argument is converted to bytes using Perl's usual scalar
       stringification.  Defined scalars, including numbers and
       string-overloaded objects, are accepted. "undef" is treated as an empty
       string and may emit Perl's usual "uninitialized value" warning.

        $d->add('any data');
        #or
        $d->add('any data', 'more data', 'even more data');

       Note that all the following cases are equivalent:

        # case 1
        $d->add('aa', 'bb', 'cc');

        # case 2
        $d->add('aa');
        $d->add('bb');
        $d->add('cc');

        # case 3
        $d->add('aabbcc');

        # case 4
        $d->add('aa')->add('bb')->add('cc');

   addfile
       Reads a file or filehandle and appends its content to the message.
       Returns the digest object itself.

        $d->addfile('filename.dat');
        #or
        my $filehandle = ...; # existing binary-mode filehandle
        $d->addfile($filehandle);

       Note: The filehandle must be in binary mode before you pass it to
       addfile().

   hashsize
       Returns the length of calculated digest in bytes (e.g. 32 for SHA-256).

        $d->hashsize;
        #or
        Crypt::Digest->hashsize('SHA1');
        #or
        Crypt::Digest::hashsize('SHA1');

   digest
       Returns the binary digest (raw bytes).  The first call finalizes the
       digest object. Any later add(), addfile(), digest(), hexdigest(),
       b64digest(), or b64udigest() call will fail until you call reset().

        my $result_raw = $d->digest();

   hexdigest
       Returns the digest encoded as a hexadecimal string.  Like digest(), the
       first call finalizes the digest object.

        my $result_hex = $d->hexdigest();

   b64digest
       Returns the digest encoded as a Base64 string with trailing "="
       padding.  Note: This padding style might differ from other "Digest::*"
       modules on CPAN.  Like digest(), the first call finalizes the digest
       object.

        my $result_b64 = $d->b64digest();

   b64udigest
       Returns the digest encoded as a Base64 URL-safe string (see RFC 4648
       section 5).  Like digest(), the first call finalizes the digest object.

        my $result_b64url = $d->b64udigest();


SEE ALSO

       o   CryptX(3)

       o   Crypt::Digest(3) tries to be compatible with the Digest
           interface.

       o   Check subclasses like Crypt::Digest::SHA1(3),
           Crypt::Digest::MD5(3), ...

perl v5.34.3                      2026-05-11                  Crypt::Digest(3)

cryptx 0.89.0 - Generated Mon May 11 13:31:07 CDT 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.