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