Hash algorithms (one-way functions that map large domain of inputs to a smaller range of values) may include checksums, CRC and other simple computations that could ensure, for example, that there have been no errrors when transmitting files. On the other hand, Secure Hash Algorithms should ensure that nobody can infer any meaningful information from the hashed value, and most importantly – it should be prohibitively expensive to build “collisions” (find any two arguments that map to the same value). They are used to store user passwords and other information (that we need to check against, but do not want to store in cleartext). Historically MD5 algorithm has been widely used, but it turned out to be insecure (collisions are relatively easy to find). Therefore there have been SHA1, SHA2 (including various lengths of the hash values – SHA-256 is a member of SHA2 family), SHA3 and some others.