xref: /freebsd/sbin/md5/md5.1 (revision 086feed850c31c278f25c958b97992d024139896)
1.\" $FreeBSD$
2.Dd May 19, 2021
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(All other hashes have the same options and usage.)
19.Sh DESCRIPTION
20The
21.Nm md5 , sha1 , sha224 , sha256 , sha384 , sha512 , sha512t256 , rmd160 ,
22.Nm skein256 , skein512 ,
23and
24.Nm skein1024
25utilities take as input a message of arbitrary length and produce as
26output a
27.Dq fingerprint
28or
29.Dq message digest
30of the input.
31The
32.Nm md5sum , sha1sum , sha224sum , sha256sum , sha384sum , sha512sum ,
33.Nm sha512t256sum , rmd160sum , skein256sum , skein512sum ,
34and
35.Nm skein1024sum
36utilities do the same, but default to the reversed format of
37the
38.Fl r
39flag.
40It is conjectured that it is computationally infeasible to
41produce two messages having the same message digest, or to produce any
42message having a given prespecified target message digest.
43The SHA-224 , SHA-256 , SHA-384 , SHA-512, RIPEMD-160,
44and SKEIN
45algorithms are intended for digital signature applications, where a
46large file must be
47.Dq compressed
48in a secure manner before being encrypted with a private
49(secret)
50key under a public-key cryptosystem such as RSA.
51.Pp
52The MD5 and SHA-1 algorithms have been proven to be vulnerable to practical
53collision attacks and should not be relied upon to produce unique outputs,
54.Em nor should they be used as part of a cryptographic signature scheme.
55As of 2017-03-02, there is no publicly known method to
56.Em reverse
57either algorithm, i.e., to find an input that produces a specific
58output.
59.Pp
60SHA-512t256 is a version of SHA-512 truncated to only 256 bits.
61On 64-bit hardware, this algorithm is approximately 50% faster than SHA-256 but
62with the same level of security.
63The hashes are not interchangeable.
64.Pp
65It is recommended that all new applications use SHA-512 or SKEIN-512
66instead of one of the other hash functions.
67.Pp
68The following options may be used in any combination and must
69precede any files named on the command line.
70The hexadecimal checksum of each file listed on the command line is printed
71after the options are processed.
72.Bl -tag -width indent
73.It Fl b
74Ignored for compatibility with the coreutils
75.Nm -sum
76programs.
77.It Fl c Ar string
78Compare the digest of the file against this string.
79.Pq Note that this option is not yet useful if multiple files are specified.
80This option causes an error in for the
81.Nm -sum
82programs because it check the checksums listed in a file for the coreutils
83.Nm -sum
84programs that is not yet implemented.
85.It Fl s Ar string
86Print a checksum of the given
87.Ar string .
88.It Fl p
89Echo stdin to stdout and append the checksum to stdout.
90.It Fl q
91Quiet mode \(em only the checksum is printed out.
92Overrides the
93.Fl r
94option.
95.It Fl r
96Reverses the format of the output.
97This helps with visual diffs.
98Does nothing
99when combined with the
100.Fl ptx
101options.
102.It Fl t
103Run a built-in time trial.
104For the
105.Nm -sum
106versions, this is a nop for compatibility with coreutils.
107.It Fl x
108Run a built-in test script.
109.El
110.Sh EXIT STATUS
111The
112.Nm md5 , sha1 , sha224 , sha256 , sha512 , sha512t256 , rmd160 ,
113.Nm skein256 , skein512 ,
114and
115.Nm skein1024
116utilities exit 0 on success,
1171 if at least one of the input files could not be read,
118and 2 if at least one file does not have the same hash as the
119.Fl c
120option.
121.Sh EXAMPLES
122Calculate the MD5 checksum of the string
123.Dq Hello .
124.Bd -literal -offset indent
125$ md5 -s Hello
126MD5 ("Hello") = 8b1a9953c4611296a827abf8c47804d7
127.Ed
128.Pp
129Same as above, but note the absence of the newline character in the input
130string:
131.Bd -literal -offset indent
132$ echo -n Hello | md5
1338b1a9953c4611296a827abf8c47804d7
134.Ed
135.Pp
136Calculate the checksum of multiple files reversing the output:
137.Bd -literal -offset indent
138$ md5 -r /boot/loader.conf /etc/rc.conf
139ada5f60f23af88ff95b8091d6d67bef6 /boot/loader.conf
140d80bf36c332dc0fdc479366ec3fa44cd /etc/rc.conf
141.Ed
142.Pp
143Write the digest for
144.Pa /boot/loader.conf
145in a file named
146.Pa digest .
147Then calculate the checksum again and validate it against the checksum string
148extracted from the
149.Pa digest
150file:
151.Bd -literal -offset indent
152$ md5 /boot/loader.conf > digest && md5 -c $(cut -f2 -d= digest) /boot/loader.conf
153MD5 (/boot/loader.conf) = ada5f60f23af88ff95b8091d6d67bef6
154.Ed
155.Pp
156Same as above but comparing the digest against an invalid string
157.Pq Dq randomstring ,
158which results in a failure.
159.Bd -literal -offset indent
160$ md5 -c randomstring /boot/loader.conf
161MD5 (/boot/loader.conf) = ada5f60f23af88ff95b8091d6d67bef6 [ Failed ]
162.Ed
163.Sh SEE ALSO
164.Xr cksum 1 ,
165.Xr md5 3 ,
166.Xr ripemd 3 ,
167.Xr sha 3 ,
168.Xr sha256 3 ,
169.Xr sha384 3 ,
170.Xr sha512 3 ,
171.Xr skein 3
172.Rs
173.%A R. Rivest
174.%T The MD5 Message-Digest Algorithm
175.%O RFC1321
176.Re
177.Rs
178.%A J. Burrows
179.%T The Secure Hash Standard
180.%O FIPS PUB 180-2
181.Re
182.Rs
183.%A D. Eastlake and P. Jones
184.%T US Secure Hash Algorithm 1
185.%O RFC 3174
186.Re
187.Pp
188RIPEMD-160 is part of the ISO draft standard
189.Qq ISO/IEC DIS 10118-3
190on dedicated hash functions.
191.Pp
192Secure Hash Standard (SHS):
193.Pa http://csrc.nist.gov/cryptval/shs.html .
194.Pp
195The RIPEMD-160 page:
196.Pa http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html .
197.Sh BUGS
198All of the utilities that end in
199.Sq sum
200are intended to be compatible with the GNU coreutils programs.
201However, the long arguments and the
202.Fl -check
203functionality are not provided.
204.Sh ACKNOWLEDGMENTS
205This program is placed in the public domain for free general use by
206RSA Data Security.
207.Pp
208Support for SHA-1 and RIPEMD-160 has been added by
209.An Oliver Eikemeier Aq Mt eik@FreeBSD.org .
210