A git-annex key has this format:

	BACKEND[-sNNNN][-mNNNN][-SNNNN-CNNNN]--NAME

For example:

	SHA256E-s31390--f50d7ac4c6b9031379986bc362fcefb65f1e52621ce1708d537e740fefc59cc0.mp3

* The backend is one of the [[key-value_backends|backends]], which
  are always upper-cased.
* The name field at the end has a format dependent on the backend. It is
  always the last field, and is prefixed with "--". Unlike other fields,
  it may contain "-" in its content. It should not contain newline
  characters or "/"; otherwise nearly anything goes. The "E" variants of
  hash keys include a filename extension after the hash.
* The "-s" field is optional, and is the size of the content in bytes.
* The "-m" field is optional, and is the mtime of the file when it was
  added to git-annex, expressed as seconds from the epoch.
  This is currently only used by the WORM backend.
* The "-S" and "-C" fields are only used for keys that are chunks
  of some other key. "-S" is the size of the chunk, and "-C" is the chunk
  number (starting at 1).
* Other fields could be added in the future, if needed.

git-annex always puts the fields in the order shown above when serializing
a key. Older versions of git-annex would parse keys with the fields in other
orders (although the name field must always come last), but the current
version requires the fields come in the order shown above.

The [[`git annex examinekey`|git-annex-examinekey]] command can be used to extract information from
a key.