Which of the following algorithms can be used to guarantee the integrity of messages being sent, in transit, or stored?