ストリーム暗号(ストリームあんごう、stream cipher)とは、平文をビット単位やバイト単位で逐次暗号化する暗号である。平文を64ビットや128ビットなどの固定長のブロックに分割して暗号化するブロック暗号に対比した語である。その構成上、入力が逐次追加されるデータであった場合、ブロック暗号は入力がブロックサイズに達するまで溜まらないと処理を進めることができないのに対し、ストリーム暗号はその必要がないのが特徴である。 ストリーム暗号は、鍵ストリーム(key stream)を生成する鍵ストリーム生成部と、鍵ストリームと平文を結合する結合部で構成される。典型的には、共通鍵方式において、ある鍵を初期値として擬似乱数列を生成し、平文との排他的論理和 (XOR、) によって暗号文を作る。復号時には、同じ鍵(同じ初期値)から生成した擬似乱数列と暗号文との排他的論理和によって平文を得る。 ストリーム暗