Hashing
Hashing is the mathematical process to convert arbitrary-size input to a unique fixed-size output, also known as a hash or digest.
Hashing algorithms are one-way functions, meaning that it is computationally infeasible to reverse engineer the original input data from the hash output. Additionally, even minor changes to the input data will result in significant changes to the hash.
The practical applications of hashing range from password storage to data integrity checks and digital signatures. For example, in the case of password storage, the database stores a hash of the password instead of the actual password. When a user attempts to log in, their entered password is hashed and compared to the stored hash, and access is granted only after the two hashes match. There are additional requirements of adding salt and pepper to the input to prevent an attacker from guessing the password based on a pre-determined hash. Even though that is outside the scope of CRISC and this...