fitsmd5 - Compute/update the DATAMD5 keyword/value
fitsmd5 [-u] [-s] [-a] <FITS files...>
fitsmd5 computes the MD5 signature of all data sections in a FITS file,
and prints out the results on stdout. This command can optionally
update the main FITS header in modifying the value of the DATAMD5 key.
This command is useful to give a unique ID to a FITS file. The
algorithm simply browses through all data sections in the input file
and passes the data blocks to an MD5 hash function. The final result is
a 128-bit signature that can be used to uniquely identify the file.
This approach is meant to provide a tool to tag FITS files with unique
IDs, it is not meant to be used as a checksum for file integrity (the
CKSUM key is the solution for that), although it could be used in that
spirit. The main point is that only data sections are taken into
account, leaving the possibility of changing the headers without
affecting the data signature.
MD5 hashing is cryptographically strong, which means the probability of
having two different FITS files getting the same ID is almost zero. It
should be good enough to assign a unique ID to several tens of
thousands of frames. Since there is still a tiny but non-zero
possibility that two different files will get an identical key, this
approach is not recommended to tag very large numbers of files
(typically: millions of them). If you do have a large database of FITS
files, using a timestamp is usually a better approach.
The MD5 signature is a good solution to tag a list of FITS files which
might have originated from various sources on which the database
maintainer has no control. Typically, calibration databases holding
calibration frames for a given instrument, receive data from different
actors who might not be in sync with unique file naming conventions.
This command makes sure it is always possible to assign a unique ID to
Notice that if the input FITS file has no data section, the returned
MD5 key will be non-zero (it is exactly
d41d8cd98f00b204e9800998ecf8427e). This signature also offers the
interesting property that if two files have exactly the same pixels
(bit-wise comparisons) they will get the same ID, this is useful e.g.
for regression tests.
If you want to produce files containing the DATAMD5 key in their main
headers, you should use the qfits library, which always inserts this
key. If you are working with other FITS-processing software, you should
allocate an empty DATAMD5 placeholder and apply this command with the
-u option to update the value.
Notice that this command can also compute the MD5 sum of a complete
file, not just its data sections (see -a option). In this mode, the
command is completely identical to the GNU md5sum command, which is
used to compute checksums on files. Input files in that case need not
be FITS, though they still need to be regular files.
-u Try to update the DATAMD5 keyword in the main header if present.
-s Silent mode: run without printing any message.
-a Compute the MD5 sum on all bits in the file. In this mode, the
command behaves like the GNU md5sum command, to be used e.g. as
a checksum. This option excludes all others.
Input files to fitsmd5 shall comply with the FITS format, except when
used with -a option.
01 Aug 2001 fitsmd5(1)