ストリーム暗号
ストリーム暗号は、鍵ストリーム(key stream)を生成する鍵ストリーム生成部と、鍵ストリームと平文を結合する結合部で構成される。典型的には、共通鍵方式において、ある鍵を初期値として擬似乱数列を生成し、平文との排他的論理和 (XOR、 ⊕ {\displaystyle \oplus } ) によって暗号文を作る。復号時には、同じ鍵(同じ初期値)から生成した擬似乱数列と暗号文との排他的論理和によって平文を得る。
( m ⊕ k ) ⊕ k = m ⊕ ( k ⊕ k ) = m {\displaystyle (m\oplus k)\oplus k=m\oplus (k\oplus k)=m}
ストリーム暗号の多くは擬似乱数をデータに先行して生成できるので待ち時間が少ない。また、ブロック暗号では平文がブロックサイズの整数倍ではない場合にパディング処理が必要になるが、ストリーム暗号ではこれが不要であり、常に平文のサイズと暗号文のサイズが等しくなる。処理遅延が少ないことやデータサイズが増加しないことは通信などに利用する場合にメリットとなりうる。