So HMAC, CMAC, DAA are different algorithms for generating MAC based symmetric block ciphers. If all use symmetric ciphers to produce MAC, what is the key difference between them? In other word, why do we need all these types if we get MAC anyway?

Thank you

  • 2
    You'll probably do better with this question on crypto.se. However, I believe HMAC uses a hash function, not a block cipher. I believe DAA is when you are encrypting using a authenticating cipher, which isn't always what you want - you may want a clear text that is authenticated, for instance.
    – crovers
    Nov 22, 2016 at 21:04

1 Answer 1


DAA is a specific deprecated government standard for authenticated encryption. It is not something you would want to use. In particular, it is a modified version of CMAC using the insecure DES cipher.

HMAC uses a hash algorithm to provide authentication. It is usually quite fast. CMAC on the other hand uses a block cipher in CBC mode, making it a lot slower. The only reason CMAC, which requires double the number of calls to the block cipher for encryption, would be used is if it is being used on an embedded system which already has hardware acceleration for the cipher, making it easy to re-purpose it for authentication. In general, you will want to use HMAC.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .