A message may be accompanied with a digital signature, a MAC or a hash. What assurances does each primitive provide to the recipient.
In your answer, please discuss for each primitive:
Integrity: can the recipient be confident that the message has not been accidentally modified?
Authentication: can the recipient be confident that the message originates from the sender?
Non-repudiation: if the recipient passes the message and the proof to a third party, can the third party be confident that the message originated from the sender? (Please note that I am talking about non-repudiation in the cryptographic sense, not in the legal sense.)
Keys: does the primitive require a shared secret key, or public private keypairs?