Symmetric cryptography assumes that all the parties have the same information needed for encryption, decryption, or integrity check, with block ciphers and hash functions as the most famous examples. A block cipher transforms a large block of data with an algorithm parametrized by a secret key. Hash functions convert a data string to a fixed-length hash value, which serves as an integrity certificate. Though hash functions do not encrypt, they are designed similarly to block ciphers. We analyze the security of symmetric primitives, which is also known as cryptanalysis. We look for a weakness in a cryptosystem, or for a flaw that was missed by its designer. As cryptography must hide the information, any demonstration of a non-random behavior of a primitive may lead to a full compromise of a system.