Salsa20
また、ChaChaの1/4ラウンド関数は、変化をよりすばやく拡散する。Salsa20の1/4ラウンド関数の入力の1ビットを変更すると、平均で出力の8ビットが変化するが、ChaChaの場合は12.5ビットが変化する。
さらに、ChaChaとSalsaとでは、1/4ラウンド関数中の加算、xor、ビットローテーションの数が同じであるが、 ローテートのうち2つが8の倍数であることから、x86を含むいくつかのアーキテクチャでは、最適化が可能となる 。 加えて、SSE向けに最適化することが可能であることがSalsa20において発見されており、ChaChaではこれを利用できるように入力フォーマットが変更されている。 ラウンドごとに列方向と行方向を交互に繰り返すのではなく、列方向と角線方向を繰り返す。
ChaCha20ではこのdouble-roundを10回繰り返す。
C/C++ での実装は以下のとおり:
ChaChaはSHA-3選定の最終候補であったBLAKEの基礎となっている。