digital signatures and message authentication codes 2113505