HMAC Explained: How Keyed Hash Message Authentication Codes Work