1package Crypt::Digest::MD4;
2
3### BEWARE - GENERATED FILE, DO NOT EDIT MANUALLY!
4
5use strict;
6use warnings;
7our $VERSION = '0.075';
8
9use base qw(Crypt::Digest Exporter);
10our %EXPORT_TAGS = ( all => [qw( md4 md4_hex md4_b64 md4_b64u md4_file md4_file_hex md4_file_b64 md4_file_b64u )] );
11our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
12our @EXPORT = qw();
13
14use Carp;
15$Carp::Internal{(__PACKAGE__)}++;
16use Crypt::Digest;
17
18sub hashsize                { Crypt::Digest::hashsize('MD4')             }
19sub md4             { Crypt::Digest::digest_data('MD4', @_)      }
20sub md4_hex         { Crypt::Digest::digest_data_hex('MD4', @_)  }
21sub md4_b64         { Crypt::Digest::digest_data_b64('MD4', @_)  }
22sub md4_b64u        { Crypt::Digest::digest_data_b64u('MD4', @_) }
23sub md4_file        { Crypt::Digest::digest_file('MD4', @_)      }
24sub md4_file_hex    { Crypt::Digest::digest_file_hex('MD4', @_)  }
25sub md4_file_b64    { Crypt::Digest::digest_file_b64('MD4', @_)  }
26sub md4_file_b64u   { Crypt::Digest::digest_file_b64u('MD4', @_) }
27
281;
29
30=pod
31
32=head1 NAME
33
34Crypt::Digest::MD4 - Hash function MD4 [size: 128 bits]
35
36=head1 SYNOPSIS
37
38   ### Functional interface:
39   use Crypt::Digest::MD4 qw( md4 md4_hex md4_b64 md4_b64u
40                                md4_file md4_file_hex md4_file_b64 md4_file_b64u );
41
42   # calculate digest from string/buffer
43   $md4_raw  = md4('data string');
44   $md4_hex  = md4_hex('data string');
45   $md4_b64  = md4_b64('data string');
46   $md4_b64u = md4_b64u('data string');
47   # calculate digest from file
48   $md4_raw  = md4_file('filename.dat');
49   $md4_hex  = md4_file_hex('filename.dat');
50   $md4_b64  = md4_file_b64('filename.dat');
51   $md4_b64u = md4_file_b64u('filename.dat');
52   # calculate digest from filehandle
53   $md4_raw  = md4_file(*FILEHANDLE);
54   $md4_hex  = md4_file_hex(*FILEHANDLE);
55   $md4_b64  = md4_file_b64(*FILEHANDLE);
56   $md4_b64u = md4_file_b64u(*FILEHANDLE);
57
58   ### OO interface:
59   use Crypt::Digest::MD4;
60
61   $d = Crypt::Digest::MD4->new;
62   $d->add('any data');
63   $d->addfile('filename.dat');
64   $d->addfile(*FILEHANDLE);
65   $result_raw  = $d->digest;     # raw bytes
66   $result_hex  = $d->hexdigest;  # hexadecimal form
67   $result_b64  = $d->b64digest;  # Base64 form
68   $result_b64u = $d->b64udigest; # Base64 URL Safe form
69
70=head1 DESCRIPTION
71
72Provides an interface to the MD4 digest algorithm.
73
74=head1 EXPORT
75
76Nothing is exported by default.
77
78You can export selected functions:
79
80  use Crypt::Digest::MD4 qw(md4 md4_hex md4_b64 md4_b64u
81                                      md4_file md4_file_hex md4_file_b64 md4_file_b64u);
82
83Or all of them at once:
84
85  use Crypt::Digest::MD4 ':all';
86
87=head1 FUNCTIONS
88
89=head2 md4
90
91Logically joins all arguments into a single string, and returns its MD4 digest encoded as a binary string.
92
93 $md4_raw = md4('data string');
94 #or
95 $md4_raw = md4('any data', 'more data', 'even more data');
96
97=head2 md4_hex
98
99Logically joins all arguments into a single string, and returns its MD4 digest encoded as a hexadecimal string.
100
101 $md4_hex = md4_hex('data string');
102 #or
103 $md4_hex = md4_hex('any data', 'more data', 'even more data');
104
105=head2 md4_b64
106
107Logically joins all arguments into a single string, and returns its MD4 digest encoded as a Base64 string, B<with> trailing '=' padding.
108
109 $md4_b64 = md4_b64('data string');
110 #or
111 $md4_b64 = md4_b64('any data', 'more data', 'even more data');
112
113=head2 md4_b64u
114
115Logically joins all arguments into a single string, and returns its MD4 digest encoded as a Base64 URL Safe string (see RFC 4648 section 5).
116
117 $md4_b64url = md4_b64u('data string');
118 #or
119 $md4_b64url = md4_b64u('any data', 'more data', 'even more data');
120
121=head2 md4_file
122
123Reads file (defined by filename or filehandle) content, and returns its MD4 digest encoded as a binary string.
124
125 $md4_raw = md4_file('filename.dat');
126 #or
127 $md4_raw = md4_file(*FILEHANDLE);
128
129=head2 md4_file_hex
130
131Reads file (defined by filename or filehandle) content, and returns its MD4 digest encoded as a hexadecimal string.
132
133 $md4_hex = md4_file_hex('filename.dat');
134 #or
135 $md4_hex = md4_file_hex(*FILEHANDLE);
136
137B<BEWARE:> You have to make sure that the filehandle is in binary mode before you pass it as argument to the addfile() method.
138
139=head2 md4_file_b64
140
141Reads file (defined by filename or filehandle) content, and returns its MD4 digest encoded as a Base64 string, B<with> trailing '=' padding.
142
143 $md4_b64 = md4_file_b64('filename.dat');
144 #or
145 $md4_b64 = md4_file_b64(*FILEHANDLE);
146
147=head2 md4_file_b64u
148
149Reads file (defined by filename or filehandle) content, and returns its MD4 digest encoded as a Base64 URL Safe string (see RFC 4648 section 5).
150
151 $md4_b64url = md4_file_b64u('filename.dat');
152 #or
153 $md4_b64url = md4_file_b64u(*FILEHANDLE);
154
155=head1 METHODS
156
157The OO interface provides the same set of functions as L<Crypt::Digest>.
158
159=head2 new
160
161 $d = Crypt::Digest::MD4->new();
162
163=head2 clone
164
165 $d->clone();
166
167=head2 reset
168
169 $d->reset();
170
171=head2 add
172
173 $d->add('any data');
174 #or
175 $d->add('any data', 'more data', 'even more data');
176
177=head2 addfile
178
179 $d->addfile('filename.dat');
180 #or
181 $d->addfile(*FILEHANDLE);
182
183=head2 add_bits
184
185 $d->add_bits($bit_string);   # e.g. $d->add_bits("111100001010");
186 #or
187 $d->add_bits($data, $nbits); # e.g. $d->add_bits("\xF0\xA0", 16);
188
189=head2 hashsize
190
191 $d->hashsize;
192 #or
193 Crypt::Digest::MD4->hashsize();
194 #or
195 Crypt::Digest::MD4::hashsize();
196
197=head2 digest
198
199 $result_raw = $d->digest();
200
201=head2 hexdigest
202
203 $result_hex = $d->hexdigest();
204
205=head2 b64digest
206
207 $result_b64 = $d->b64digest();
208
209=head2 b64udigest
210
211 $result_b64url = $d->b64udigest();
212
213=head1 SEE ALSO
214
215=over
216
217=item * L<CryptX|CryptX>, L<Crypt::Digest>
218
219=item * L<https://en.wikipedia.org/wiki/MD4>
220
221=back
222
223=cut
224