back index next

鍵Knの求め方


 DESの処理が行われている際、鍵K(64bit)はそのままでは使用されない。与えられた鍵Kから、鍵Kn(48bit)を16個生成して使用する。鍵Knの求め方は図9の通りである。図中では、’○’がシフト演算、’□’が値を意味する。また、
PC−1とPC−2はそれぞれ鍵の縮約型転置PC−1と鍵の縮約型転置PC−2である。
図9 鍵Knの求め方
鍵Knの求め方

図9を見ると分かるように、鍵Knは次のように求める。
  1. 鍵の縮約型転置PC−1によって64bitの入力ビット列を56bitにする。
  2. 縮約転地されたビット列を左28bitと右28bitに分割し、左右の値をそれぞれC0,D0とする。
  3. C0,D0をLS0にかけ、その結果をC1,D1とする。
  4. C1,D1を結合し、56bitの値とする。
  5. この値を鍵の縮約型転置PC−2にかけ48bitの値にする。この値が鍵K1となる。
  6. C1,D1をLS1にかけ、その結果をC2,D2とする。
  7. 3〜6を一般化すると次のようになる。
  8. 以上のことを、鍵K16が求まるまで繰り返す。
LSnはLeft Shiftのことであり、あるビット数分だけ左循環シフトすることである。何ビットシフトするかはnと鍵のシフト回数によって決定される。例えばn=2ならば1ビット左シフトすることになり、n=12ならば2ビット左シフトすることになる。
 なお、通常の左シフト(左論理シフト)では最も右のビットには0を補完するが、DESで用いる左循環シフトではシフト前の最上位ビットの値を、シフト後の最下位ビットの値として用いる。
図10 左循環シフト
左循環シフトの様子


back index next