I know that a hashing algorithm is a function that receive an any-length input and return a fixed-length output (e.g.: hashing(input)=digest). Alright? But I read this description

:
"
Hashing algorithms, like encryption algorithms, take cleartext data and, using an encryption key, transform the cleartext data into something different and unreadable by an attacker. But what comes out of the hashing process is not ciphertext as with encryption algorithms, but rather a fixed-length hash or digest. The implication with ciphertext is that it will be deciphered. With a hash, the whole purpose is that it essentially cannot be deciphered as it is extremely infeasible to do so. The two most popular hashing algorithms are Message Digest 5 (MD5) and Secure Hashing Algorithm 1 (SHA-1). These will be discussed separately in their own sections shortly."
(source: CCNA Security, ExamCram, Stewart)
But this is wrong!!! The HMAC algorithms use a key, alright, but don't MD5 and SHA!!