金鑰輸入到一個偽亂數發生器,該偽亂數發生器產生一串隨機的8位元數,輸出的金鑰流和明文流的每個位元組進行對位互斥或運算,得到一個位元組,解密時使用相同的偽隨機序列。
設計串流加密法需要注意:
分組密碼的優點是可以重複使用金鑰,但如果串流加密法對兩個文明用相同金鑰加密,那麼密文分析就相當容易。
RC4是Ron Rivest為RSA公司在1987年設計的一種串流加密法,金鑰長度可變,面向位元組操作。分析顯示該密碼的週期很可能大於,每輸出一個位元組的結果僅需要8到16條機器操作指令,軟體實現也很快。應用於網路瀏覽器和伺服器同學制定了SSL/TLS標準。
下面為串流加密法RC4的金鑰生成過程。
初始狀態的時候,S為0到255的填充,T為金鑰K(長度為keylen)的重複填充。
對已經初始填充的S進行初始化置換,置換過程為交換第i個位與第j個位,演演算法為
j=0;
for i=0 to 255 do
j=(j+S[i]+T[i]) mod 256;
swap(S[i],T[i]);
完成S的初始化置換後,輸入的金鑰就不再使用,取代的是S。
金鑰流的生成過程如上圖所示,其演演算法為
加密的時候,將k的值與明文的下一個位元組互斥或,解密時,將k的值與密文的下一個位元組互斥或。