FEAL
FEAL のブロック長は64ビットで、Feistel構造を採用し、FEAL-4はラウンド段数4、FEAL-8はラウンド段数8、そしてFEAL-N/NXはラウンド段数は可変である(Nは32以上)。
鍵長は、FEAL-Nは64ビット、FEAL-NXは128ビットである。FEAL-NXで鍵128ビットうち、右64ビットをすべて0とした場合、FEAL-Nと等価になる。
最初と最後に拡大鍵との排他的論理和(XOR、whitening と呼ばれる処理)と、左32ビットと右32ビットをXORし、右32ビットを更新する処理が設けられている。
FEALのラウンド関数は、拡大鍵16ビットを用いて、32ビットの入力をスクランブルして32ビットを出力する。ラウンド関数の内部を右図に示す。入力32ビットを8ビット単位にわけ、8ビット単位で隣の8ビットを用いてXORやS関数による変換を順番に行う構造になっている。この構造を開発者は「阿弥陀籤」からヒントを得たと述べており、"あみだ構造" と呼ばれることもある。
S関数は、8ビットCPUで容易に実装可能なように、法256での加算とビットシフトからなり、DESのようにテーブル参照をしなくてすむ分、コードサイズを小さく出来る。
鍵スケジューラでは、メインのデータスクランブルで使用されるラウンド関数を少し変形した関数を用いて、またFeistel構造とは異なる構造で、鍵64ビットを更新し、中間データを拡大鍵として出力する。