This document discusses common cryptography failures that developers should avoid. It begins by outlining what conventional wisdom says about cryptography implementation challenges. It then examines specific failures like improper password storage, misuse of hash functions, lack of authentication with encryption, reuse of nonces/IVs, poor randomness, and TLS certificate issues. For each failure, it provides examples of real world incidents and outlines the proper approaches to implementation. The goal is to help developers learn from these mistakes and understand cryptography at a level needed to use it securely.