]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sbin/md5/md5.1
pfctl: remove set but unused variable
[FreeBSD/FreeBSD.git] / sbin / md5 / md5.1
1 .\" $FreeBSD$
2 .Dd February 6, 2023
3 .Dt MD5 1
4 .Os
5 .Sh NAME
6 .Nm md5 , sha1 , sha224 , sha256 , sha384 ,
7 .Nm sha512 , sha512t224 , sha512t256 ,
8 .Nm rmd160 , skein256 , skein512 , skein1024 ,
9 .Nm md5sum , sha1sum , sha224sum , sha256sum , sha384sum ,
10 .Nm sha512sum , sha512t224sum , sha512t256sum ,
11 .Nm rmd160sum , skein256sum , skein512sum , skein1024sum
12 .Nd calculate a message-digest fingerprint (checksum) for a file
13 .Sh SYNOPSIS
14 .Nm
15 .Op Fl pqrtx
16 .Op Fl c Ar string
17 .Op Fl s Ar string
18 .Op Ar
19 .Pp
20 .Nm md5sum
21 .Op Fl pqrtx
22 .Op Fl c Ar file
23 .Op Fl s Ar string
24 .Op Ar
25 .Pp
26 (All other hashes have the same options and usage.)
27 .Sh DESCRIPTION
28 The
29 .Nm md5 , sha1 , sha224 , sha256 , sha384 , sha512 , sha512t224 , sha512t256 ,
30 .Nm rmd160 , skein256 , skein512 ,
31 and
32 .Nm skein1024
33 utilities take as input a message of arbitrary length and produce as
34 output a
35 .Dq fingerprint
36 or
37 .Dq message digest
38 of the input.
39 The
40 .Nm md5sum , sha1sum , sha224sum , sha256sum , sha384sum , sha512sum ,
41 .Nm sha512t224sum , sha512t256sum , rmd160sum , skein256sum , skein512sum ,
42 and
43 .Nm skein1024sum
44 utilities do the same, but default to the reversed format of
45 the
46 .Fl r
47 flag.
48 It is conjectured that it is computationally infeasible to
49 produce two messages having the same message digest, or to produce any
50 message having a given prespecified target message digest.
51 The SHA-224 , SHA-256 , SHA-384 , SHA-512, RIPEMD-160,
52 and SKEIN
53 algorithms are intended for digital signature applications, where a
54 large file must be
55 .Dq compressed
56 in a secure manner before being encrypted with a private
57 (secret)
58 key under a public-key cryptosystem such as RSA.
59 .Pp
60 The MD5 and SHA-1 algorithms have been proven to be vulnerable to practical
61 collision attacks and should not be relied upon to produce unique outputs,
62 .Em nor should they be used as part of a cryptographic signature scheme.
63 As of 2017-03-02, there is no publicly known method to
64 .Em reverse
65 either algorithm, i.e., to find an input that produces a specific
66 output.
67 .Pp
68 SHA-512t256 is a version of SHA-512 truncated to only 256 bits.
69 On 64-bit hardware, this algorithm is approximately 50% faster than SHA-256 but
70 with the same level of security.
71 The hashes are not interchangeable.
72 .Pp
73 SHA-512t224 is identical to SHA-512t256, but with the digest truncated
74 to 224 bits.
75 .Pp
76 It is recommended that all new applications use SHA-512 or SKEIN-512
77 instead of one of the other hash functions.
78 .Pp
79 The following options may be used in any combination and must
80 precede any files named on the command line.
81 The hexadecimal checksum of each file listed on the command line is printed
82 after the options are processed.
83 .Bl -tag -width indent
84 .It Fl b
85 Make the
86 .Nm -sum
87 programs separate hash and digest with a blank followed by an asterisk instead
88 of by 2 blank characters for full compatibility with the output generated by the
89 coreutils versions of these programs.
90 .It Fl c Ar string
91 If the program was called with a name that does not end in
92 .Nm sum ,
93 compare the digest of the file against this string.
94 If combined with the
95 .Fl q
96 option, the calculated digest is printed in addition to the exit status being set.
97 .Pq Note that this option is not yet useful if multiple files are specified.
98 .It Fl c Ar file
99 If the program was called with a name that does end in
100 .Nm sum ,
101 the file passed as argument must contain digest lines generated by the same
102 digest algorithm with or without the
103 .Fl r
104 option
105 .Pq i.e., in either classical BSD format or in GNU coreutils format .
106 A line with the file name followed by a colon
107 .Dq ":"
108 and either OK or FAILED is written for each well-formed line in the digest file.
109 If applicable, the number of failed comparisons and the number of lines that were
110 skipped since they were not well-formed are printed at the end.
111 The
112 .Fl q
113 option can be used to quiesce the output unless there are mismatched entries in
114 the digest.
115 .Pp
116 .It Fl s Ar string
117 Print a checksum of the given
118 .Ar string .
119 .It Fl p
120 Echo stdin to stdout and append the checksum to stdout.
121 .It Fl q
122 Quiet mode \(em only the checksum is printed out.
123 Overrides the
124 .Fl r
125 option.
126 .It Fl r
127 Reverses the format of the output.
128 This helps with visual diffs.
129 Does nothing
130 when combined with the
131 .Fl ptx
132 options.
133 .It Fl t
134 Run a built-in time trial.
135 For the
136 .Nm -sum
137 versions, this is a nop for compatibility with coreutils.
138 .It Fl x
139 Run a built-in test script.
140 .El
141 .Sh EXIT STATUS
142 The
143 .Nm md5 , sha1 , sha224 , sha256 , sha512 , sha512t256 , rmd160 ,
144 .Nm skein256 , skein512 ,
145 and
146 .Nm skein1024
147 utilities exit 0 on success,
148 1 if at least one of the input files could not be read,
149 and 2 if at least one file does not have the same hash as the
150 .Fl c
151 option.
152 .Sh EXAMPLES
153 Calculate the MD5 checksum of the string
154 .Dq Hello .
155 .Bd -literal -offset indent
156 $ md5 -s Hello
157 MD5 ("Hello") = 8b1a9953c4611296a827abf8c47804d7
158 .Ed
159 .Pp
160 Same as above, but note the absence of the newline character in the input
161 string:
162 .Bd -literal -offset indent
163 $ echo -n Hello | md5
164 8b1a9953c4611296a827abf8c47804d7
165 .Ed
166 .Pp
167 Calculate the checksum of multiple files reversing the output:
168 .Bd -literal -offset indent
169 $ md5 -r /boot/loader.conf /etc/rc.conf
170 ada5f60f23af88ff95b8091d6d67bef6 /boot/loader.conf
171 d80bf36c332dc0fdc479366ec3fa44cd /etc/rc.conf
172 .Pd
173 The
174 .Nm -sum
175 variants put 2 blank characters between hash and file name for full compatibility
176 with the coreutils versions of these commands.
177 .Ed
178 .Pp
179 Write the digest for
180 .Pa /boot/loader.conf
181 in a file named
182 .Pa digest .
183 Then calculate the checksum again and validate it against the checksum string
184 extracted from the
185 .Pa digest
186 file:
187 .Bd -literal -offset indent
188 $ md5 /boot/loader.conf > digest && md5 -c $(cut -f2 -d= digest) /boot/loader.conf
189 MD5 (/boot/loader.conf) = ada5f60f23af88ff95b8091d6d67bef6
190 .Ed
191 .Pp
192 Same as above but comparing the digest against an invalid string
193 .Pq Dq randomstring ,
194 which results in a failure.
195 .Bd -literal -offset indent
196 $ md5 -c randomstring /boot/loader.conf
197 MD5 (/boot/loader.conf) = ada5f60f23af88ff95b8091d6d67bef6 [ Failed ]
198 .Ed
199 .Pp
200 If invoked with a name ending in
201 .Nm -sum
202 the
203 .Fl c
204 option does not compare against a hash string passed as parameter.
205 Instead, it expects a digest file, as created under the name
206 .Pa digest
207 for
208 .Pa /boot/loader.conf
209 in the example above.
210 .Bd -literal -offset indent
211 $ md5 -c digest /boot/loader.conf
212 /boot/loader.conf: OK
213 .Ed
214 .Pp
215 The digest file may contain any number of lines in the format generated with or without the
216 .Fl r
217 option
218 .Pq i.e., in either classical BSD format or in GNU coreutils format .
219 If a hash value does not match the file, FAILED is printed instead of OK.
220 .Sh SEE ALSO
221 .Xr cksum 1 ,
222 .Xr md5 3 ,
223 .Xr ripemd 3 ,
224 .Xr sha 3 ,
225 .Xr sha256 3 ,
226 .Xr sha384 3 ,
227 .Xr sha512 3 ,
228 .Xr skein 3
229 .Rs
230 .%A R. Rivest
231 .%T The MD5 Message-Digest Algorithm
232 .%O RFC1321
233 .Re
234 .Rs
235 .%A J. Burrows
236 .%T The Secure Hash Standard
237 .%O FIPS PUB 180-2
238 .Re
239 .Rs
240 .%A D. Eastlake and P. Jones
241 .%T US Secure Hash Algorithm 1
242 .%O RFC 3174
243 .Re
244 .Pp
245 RIPEMD-160 is part of the ISO draft standard
246 .Qq ISO/IEC DIS 10118-3
247 on dedicated hash functions.
248 .Pp
249 Secure Hash Standard (SHS):
250 .Pa https://www.nist.gov/publications/secure-hash-standard-shs
251 .Pp
252 The RIPEMD-160 page:
253 .Pa https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
254 .Sh BUGS
255 All of the utilities that end in
256 .Sq sum
257 are intended to be compatible with the GNU coreutils programs.
258 However, the long option functionality is not provided.
259 .Sh ACKNOWLEDGMENTS
260 This program is placed in the public domain for free general use by
261 RSA Data Security.
262 .Pp
263 Support for SHA-1 and RIPEMD-160 has been added by
264 .An Oliver Eikemeier Aq Mt eik@FreeBSD.org .