Coba jelasin Struktur dari Salsa20 dong

Secara internal, penyandian ini menggunakan penjumlahan per bit dengan (⊕ atau XOR), penjumlahan 32 bit dengan mod 232 (⊞), dan operasi geseran melingkar berjarak tetap (<<<). Penggunaan operasi tambah-putar-XOR menghindari peluang serangan pewaktuan dalam penerapan perangkat lunak. Status internalnya terdiri dari 16 kata 32 bit yang disusun dalam matriks 4×4.

Status internalnya terdiri dari delapan kata untuk kunci, dua kata untuk letak aliran, dua kata untuk nilai yang dipakai sekali (nonce; intinya bit-bit tambahan untuk letak aliran), dan empat kata tetapan:

Kata-kata tetapan berbunyi "expand 32-byte k" dalam ASCII (empat kata tersebut adalah "expa", "nd 3", "2-by", dan "te k"). Ini adalah contoh bilangan tanpa tujuan khusus. Inti operasi dalam Salsa20 adalah seperempat ronde QR(a, b, c, d) yang menerima empat kata sebagai masukan dan menghasilkan empat kata:

b ^= (a + d) <<< 7;

c ^= (b + a) <<< 9;

d ^= (c + b) <<< 13;

a ^= (d + c) <<< 18;

Ronde bernomor ganjil menerapkan QR(a, b, c, d) kepada tiap kolom dalam matriks 4×4, sedangkan ronde bernomor genap menerapkannya kepada tiap baris. Dua ronde berturutan (ronde kolom dan ronde baris) disebut sebagai ronde ganda: