What is Avalanche effect?
[[Image:Avalanche effect.svg|thumb|300px|right| The [[SHA hash functions|SHA1]] hash function has good avalanche effect. When a single bit is changed the hash sum becomes completely different. ]] The '''avalanche effect''' (“[[landslide]] effect”) is a property of [[block cipher]]s and [[cryptographic hash function]] [[algorithm]]s. It is often desired in [[cryptography]]. The effect says that a lot of the output must change, even when the input changes only a little. In good [[block cipher]]s this means: A small change in the [[key (cryptography)|key]] or the [[plaintext]] should cause a strong change in the [[ciphertext]]. This means that small changes can spread fast, when the [[algorithm]] uses [[iteration]]s. Thus, every [[bit]] of the [[output]] depends on every bit of the [[input]]. The term ''avalanche effect'' was first used by [[Horst Feistel]] (Feistel 1973). Later, the concept was identified by ''[[Confusion and diffusion|Shannon's property of confusion]]''. If a block cipher or cryptographic hash function does not satisfy the avalanche effect to a significant degree, then it has poor randomization. Thus, a [[cryptanalysis|cryptanalyst]] can make [[Forecasting|forecasts]] about the input, if given only the output. This may be sufficient to partially or completely break (crack) the algorithm. It is one of the primary [[design]] objectives when people create a strong [[cipher]] or [[cryptographic hash function]]. They try to build a good avalanche effect in it. [[Mathematics|Mathematically]] this uses the [[butterfly effect]]. This is why most block ciphers are [[product cipher]]s. It is also why hash functions have large data blocks. == Name == The name comes from [[Landslide|landslides]]. A small [[Rock (geology)|rock]] can fall down, go along with some [[snow]] and make a destructive landslide. The rock was small, but was able to cause a lot of destruction. This is the same as what this effect does. A small change in the input (the rock) should change the output (the [[landscape]]). == Str