summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3/Digest::MD5.3perl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/archlinux/man3/Digest::MD5.3perl
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/archlinux/man3/Digest::MD5.3perl')
-rw-r--r--upstream/archlinux/man3/Digest::MD5.3perl401
1 files changed, 401 insertions, 0 deletions
diff --git a/upstream/archlinux/man3/Digest::MD5.3perl b/upstream/archlinux/man3/Digest::MD5.3perl
new file mode 100644
index 00000000..993bef41
--- /dev/null
+++ b/upstream/archlinux/man3/Digest::MD5.3perl
@@ -0,0 +1,401 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "Digest::MD5 3perl"
+.TH Digest::MD5 3perl 2024-02-11 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+Digest::MD5 \- Perl interface to the MD5 Algorithm
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 2
+\& # Functional style
+\& use Digest::MD5 qw(md5 md5_hex md5_base64);
+\&
+\& $digest = md5($data);
+\& $digest = md5_hex($data);
+\& $digest = md5_base64($data);
+\&
+\& # OO style
+\& use Digest::MD5;
+\&
+\& $ctx = Digest::MD5\->new;
+\&
+\& $ctx\->add($data);
+\& $ctx\->addfile($file_handle);
+\&
+\& $digest = $ctx\->digest;
+\& $digest = $ctx\->hexdigest;
+\& $digest = $ctx\->b64digest;
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+The \f(CW\*(C`Digest::MD5\*(C'\fR module allows you to use the RSA Data Security
+Inc. MD5 Message Digest algorithm from within Perl programs. The
+algorithm takes as input a message of arbitrary length and produces as
+output a 128\-bit "fingerprint" or "message digest" of the input.
+.PP
+Note that the MD5 algorithm is not as strong as it used to be. It has
+since 2005 been easy to generate different messages that produce the
+same MD5 digest. It still seems hard to generate messages that
+produce a given digest, but it is probably wise to move to stronger
+algorithms for applications that depend on the digest to uniquely identify
+a message.
+.PP
+The \f(CW\*(C`Digest::MD5\*(C'\fR module provide a procedural interface for simple
+use, as well as an object oriented interface that can handle messages
+of arbitrary length and which can read files directly.
+.SH FUNCTIONS
+.IX Header "FUNCTIONS"
+The following functions are provided by the \f(CW\*(C`Digest::MD5\*(C'\fR module.
+None of these functions are exported by default.
+.IP md5($data,...) 4
+.IX Item "md5($data,...)"
+This function will concatenate all arguments, calculate the MD5 digest
+of this "message", and return it in binary form. The returned string
+will be 16 bytes long.
+.Sp
+The result of md5("a", "b", "c") will be exactly the same as the
+result of md5("abc").
+.IP md5_hex($data,...) 4
+.IX Item "md5_hex($data,...)"
+Same as \fBmd5()\fR, but will return the digest in hexadecimal form. The
+length of the returned string will be 32 and it will only contain
+characters from this set: '0'..'9' and 'a'..'f'.
+.IP md5_base64($data,...) 4
+.IX Item "md5_base64($data,...)"
+Same as \fBmd5()\fR, but will return the digest as a base64 encoded string.
+The length of the returned string will be 22 and it will only contain
+characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' and
+\&'/'.
+.Sp
+Note that the base64 encoded string returned is not padded to be a
+multiple of 4 bytes long. If you want interoperability with other
+base64 encoded md5 digests you might want to append the redundant
+string "==" to the result.
+.SH METHODS
+.IX Header "METHODS"
+The object oriented interface to \f(CW\*(C`Digest::MD5\*(C'\fR is described in this
+section. After a \f(CW\*(C`Digest::MD5\*(C'\fR object has been created, you will add
+data to it and finally ask for the digest in a suitable format. A
+single object can be used to calculate multiple digests.
+.PP
+The following methods are provided:
+.ie n .IP "$md5 = Digest::MD5\->new" 4
+.el .IP "\f(CW$md5\fR = Digest::MD5\->new" 4
+.IX Item "$md5 = Digest::MD5->new"
+The constructor returns a new \f(CW\*(C`Digest::MD5\*(C'\fR object which encapsulate
+the state of the MD5 message-digest algorithm.
+.Sp
+If called as an instance method (i.e. \f(CW$md5\fR\->new) it will just reset the
+state the object to the state of a newly created object. No new
+object is created in this case.
+.ie n .IP $md5\->reset 4
+.el .IP \f(CW$md5\fR\->reset 4
+.IX Item "$md5->reset"
+This is just an alias for \f(CW$md5\fR\->new.
+.ie n .IP $md5\->clone 4
+.el .IP \f(CW$md5\fR\->clone 4
+.IX Item "$md5->clone"
+This a copy of the \f(CW$md5\fR object. It is useful when you do not want to
+destroy the digests state, but need an intermediate value of the
+digest, e.g. when calculating digests iteratively on a continuous data
+stream. Example:
+.Sp
+.Vb 5
+\& my $md5 = Digest::MD5\->new;
+\& while (<>) {
+\& $md5\->add($_);
+\& print "Line $.: ", $md5\->clone\->hexdigest, "\en";
+\& }
+.Ve
+.ie n .IP $md5\->add($data,...) 4
+.el .IP \f(CW$md5\fR\->add($data,...) 4
+.IX Item "$md5->add($data,...)"
+The \f(CW$data\fR provided as argument are appended to the message we
+calculate the digest for. The return value is the \f(CW$md5\fR object itself.
+.Sp
+All these lines will have the same effect on the state of the \f(CW$md5\fR
+object:
+.Sp
+.Vb 4
+\& $md5\->add("a"); $md5\->add("b"); $md5\->add("c");
+\& $md5\->add("a")\->add("b")\->add("c");
+\& $md5\->add("a", "b", "c");
+\& $md5\->add("abc");
+.Ve
+.ie n .IP $md5\->addfile($io_handle) 4
+.el .IP \f(CW$md5\fR\->addfile($io_handle) 4
+.IX Item "$md5->addfile($io_handle)"
+The \f(CW$io_handle\fR will be read until EOF and its content appended to the
+message we calculate the digest for. The return value is the \f(CW$md5\fR
+object itself.
+.Sp
+The \fBaddfile()\fR method will \fBcroak()\fR if it fails reading data for some
+reason. If it croaks it is unpredictable what the state of the \f(CW$md5\fR
+object will be in. The \fBaddfile()\fR method might have been able to read
+the file partially before it failed. It is probably wise to discard
+or reset the \f(CW$md5\fR object if this occurs.
+.Sp
+In most cases you want to make sure that the \f(CW$io_handle\fR is in
+\&\f(CW\*(C`binmode\*(C'\fR before you pass it as argument to the \fBaddfile()\fR method.
+.ie n .IP "$md5\->add_bits($data, $nbits)" 4
+.el .IP "\f(CW$md5\fR\->add_bits($data, \f(CW$nbits\fR)" 4
+.IX Item "$md5->add_bits($data, $nbits)"
+.PD 0
+.ie n .IP $md5\->add_bits($bitstring) 4
+.el .IP \f(CW$md5\fR\->add_bits($bitstring) 4
+.IX Item "$md5->add_bits($bitstring)"
+.PD
+Since the MD5 algorithm is byte oriented you might only add bits as
+multiples of 8, so you probably want to just use \fBadd()\fR instead. The
+\&\fBadd_bits()\fR method is provided for compatibility with other digest
+implementations. See Digest for description of the arguments
+that \fBadd_bits()\fR take.
+.ie n .IP $md5\->digest 4
+.el .IP \f(CW$md5\fR\->digest 4
+.IX Item "$md5->digest"
+Return the binary digest for the message. The returned string will be
+16 bytes long.
+.Sp
+Note that the \f(CW\*(C`digest\*(C'\fR operation is effectively a destructive,
+read-once operation. Once it has been performed, the \f(CW\*(C`Digest::MD5\*(C'\fR
+object is automatically \f(CW\*(C`reset\*(C'\fR and can be used to calculate another
+digest value. Call \f(CW$md5\fR\->clone\->digest if you want to calculate the
+digest without resetting the digest state.
+.ie n .IP $md5\->hexdigest 4
+.el .IP \f(CW$md5\fR\->hexdigest 4
+.IX Item "$md5->hexdigest"
+Same as \f(CW$md5\fR\->digest, but will return the digest in hexadecimal
+form. The length of the returned string will be 32 and it will only
+contain characters from this set: '0'..'9' and 'a'..'f'.
+.ie n .IP $md5\->b64digest 4
+.el .IP \f(CW$md5\fR\->b64digest 4
+.IX Item "$md5->b64digest"
+Same as \f(CW$md5\fR\->digest, but will return the digest as a base64 encoded
+string. The length of the returned string will be 22 and it will only
+contain characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+'
+and '/'.
+.Sp
+The base64 encoded string returned is not padded to be a multiple of 4
+bytes long. If you want interoperability with other base64 encoded
+md5 digests you might want to append the string "==" to the result.
+.ie n .IP "@ctx = $md5\->context" 4
+.el .IP "\f(CW@ctx\fR = \f(CW$md5\fR\->context" 4
+.IX Item "@ctx = $md5->context"
+.PD 0
+.ie n .IP $md5\->context(@ctx) 4
+.el .IP \f(CW$md5\fR\->context(@ctx) 4
+.IX Item "$md5->context(@ctx)"
+.PD
+Saves or restores the internal state.
+When called with no arguments, returns a list:
+number of blocks processed,
+a 16\-byte internal state buffer,
+then optionally up to 63 bytes of unprocessed data if there are any.
+When passed those same arguments, restores the state.
+This is only useful for specialised operations.
+.SH EXAMPLES
+.IX Header "EXAMPLES"
+The simplest way to use this library is to import the \fBmd5_hex()\fR
+function (or one of its cousins):
+.PP
+.Vb 2
+\& use Digest::MD5 qw(md5_hex);
+\& print "Digest is ", md5_hex("foobarbaz"), "\en";
+.Ve
+.PP
+The above example would print out the message:
+.PP
+.Vb 1
+\& Digest is 6df23dc03f9b54cc38a0fc1483df6e21
+.Ve
+.PP
+The same checksum can also be calculated in OO style:
+.PP
+.Vb 1
+\& use Digest::MD5;
+\&
+\& $md5 = Digest::MD5\->new;
+\& $md5\->add(\*(Aqfoo\*(Aq, \*(Aqbar\*(Aq);
+\& $md5\->add(\*(Aqbaz\*(Aq);
+\& $digest = $md5\->hexdigest;
+\&
+\& print "Digest is $digest\en";
+.Ve
+.PP
+With OO style, you can break the message arbitrarily. This means that we
+are no longer limited to have space for the whole message in memory, i.e.
+we can handle messages of any size.
+.PP
+This is useful when calculating checksum for files:
+.PP
+.Vb 1
+\& use Digest::MD5;
+\&
+\& my $filename = shift || "/etc/passwd";
+\& open (my $fh, \*(Aq<\*(Aq, $filename) or die "Can\*(Aqt open \*(Aq$filename\*(Aq: $!";
+\& binmode($fh);
+\&
+\& $md5 = Digest::MD5\->new;
+\& while (<$fh>) {
+\& $md5\->add($_);
+\& }
+\& close($fh);
+\& print $md5\->b64digest, " $filename\en";
+.Ve
+.PP
+Or we can use the addfile method for more efficient reading of
+the file:
+.PP
+.Vb 1
+\& use Digest::MD5;
+\&
+\& my $filename = shift || "/etc/passwd";
+\& open (my $fh, \*(Aq<\*(Aq, $filename) or die "Can\*(Aqt open \*(Aq$filename\*(Aq: $!";
+\& binmode ($fh);
+\&
+\& print Digest::MD5\->new\->addfile($fh)\->hexdigest, " $filename\en";
+.Ve
+.PP
+Since the MD5 algorithm is only defined for strings of bytes, it can not be
+used on strings that contains chars with ordinal number above 255 (Unicode
+strings). The MD5 functions and methods will croak if you try to feed them
+such input data:
+.PP
+.Vb 1
+\& use Digest::MD5 qw(md5_hex);
+\&
+\& my $str = "abc\ex{300}";
+\& print md5_hex($str), "\en"; # croaks
+\& # Wide character in subroutine entry
+.Ve
+.PP
+What you can do is calculate the MD5 checksum of the UTF\-8
+representation of such strings. This is achieved by filtering the
+string through \fBencode_utf8()\fR function:
+.PP
+.Vb 2
+\& use Digest::MD5 qw(md5_hex);
+\& use Encode qw(encode_utf8);
+\&
+\& my $str = "abc\ex{300}";
+\& print md5_hex(encode_utf8($str)), "\en";
+\& # 8c2d46911f3f5a326455f0ed7a8ed3b3
+.Ve
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Digest,
+Digest::MD2,
+Digest::SHA,
+Digest::HMAC
+.PP
+\&\fBmd5sum\fR\|(1)
+.PP
+RFC 1321
+.PP
+http://en.wikipedia.org/wiki/MD5
+.PP
+The paper "How to Break MD5 and Other Hash Functions" by Xiaoyun Wang
+and Hongbo Yu.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+This library is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+.PP
+.Vb 3
+\& Copyright 1998\-2003 Gisle Aas.
+\& Copyright 1995\-1996 Neil Winton.
+\& Copyright 1991\-1992 RSA Data Security, Inc.
+.Ve
+.PP
+The MD5 algorithm is defined in RFC 1321. This implementation is
+derived from the reference C code in RFC 1321 which is covered by
+the following copyright statement:
+.IP \(bu 4
+Copyright (C) 1991\-2, RSA Data Security, Inc. Created 1991. All
+rights reserved.
+.Sp
+License to copy and use this software is granted provided that it
+is identified as the "RSA Data Security, Inc. MD5 Message-Digest
+Algorithm" in all material mentioning or referencing this software
+or this function.
+.Sp
+License is also granted to make and use derivative works provided
+that such works are identified as "derived from the RSA Data
+Security, Inc. MD5 Message-Digest Algorithm" in all material
+mentioning or referencing the derived work.
+.Sp
+RSA Data Security, Inc. makes no representations concerning either
+the merchantability of this software or the suitability of this
+software for any particular purpose. It is provided "as is"
+without express or implied warranty of any kind.
+.Sp
+These notices must be retained in any copies of any part of this
+documentation and/or software.
+.PP
+This copyright does not prohibit distribution of any version of Perl
+containing this extension under the terms of the GNU or Artistic
+licenses.
+.SH AUTHORS
+.IX Header "AUTHORS"
+The original \f(CW\*(C`MD5\*(C'\fR interface was written by Neil Winton
+(\f(CW\*(C`N.Winton@axion.bt.co.uk\*(C'\fR).
+.PP
+The \f(CW\*(C`Digest::MD5\*(C'\fR module is written by Gisle Aas <gisle@ActiveState.com>.