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