Checksums are used to detect changes in files and detect computer viruses. However, checksum algorithms that detect random errors are not sufficient against an entity deliberately trying to fool the checksum. An attacker can insert forged data that generates the same checksum as the original. The paper discusses three types of attacks against checksums (brute force, birthday, trap door) and features needed for checksum algorithms to be resistant to attackers, such as having a long length and being non-invertible. It also describes tests to evaluate if a checksum algorithm provides even mapping and is non-invertible.