Message authentication provides a way to verify that a received message is from the alleged source and has not been altered. It includes mechanisms for non-repudiation by the source. Authentication functions include lower level authenticators and higher level functions that use authenticators to verify message authenticity. Message authentication codes are appended to messages by the sender and verified by the receiver recomputing the code. MAC attacks aim to find the key or authenticate incorrect messages without finding the key. Hash functions map messages to fixed length values to verify integrity.