RFC 3230 basically allows a client to request the checksum for a file.
(From the excellent explanation given by P. Millar)
The basic approach is to implement RFC 3230. See:
http://tools.ietf.org/html/rfc3230
The incredibly short summary is that HEAD and GET responses should include a header like:
Digest: adler32=8a23d4f8
RFC 3230 also describes how the client can request which checksum algorithm it wants. Here's an example showing the client requesting an ADLER32 checksum and the server providing this checksum:
paul@sparkplug:~$ curl -H 'Want-Digest: adler32' -I http://prometheus.desy.de/dteam/test-1 HTTP/1.1 200 OK Date: Tue, 13 Jan 2015 23:19:43 GMT Server: milton.io-2.0.0 Accept-Ranges: bytes ETag: "0000A6BC82E4ED2B44988905E34897DE3963_-462834388" Last-Modified: Tue, 13 Jan 2015 17:49:00 GMT Digest: adler32=8a23d4f8 Content-Length: 1029624
However, it's also legal for the server to always respond with an ADLER32 checksum in a Digest header, independent of the client's 'Want-Digest' header.
The format for an ADLER32 checksum is described here: