AjaxによるDES暗号アルゴリズム体験
こちらは
AjaxによるRSAアルゴリズム体験
作成目的
:このページは
作成者
の担当する 「情報セキュリティ」(短大、2年後期開講)授業科目のために作られたもので あり、共有鍵暗号(DES暗号)の理解のお助けになれば幸いです。各ステップを 手動で行いながら、体験してください。
注:JavaScript仕様互換性の関係上、Internet Explorer6.0のブラウザ環境を利 用してください
Step 1:サブ鍵を生成する
DESは、16のラウンドによって構成される。秘密鍵から各ラ ウンド用のサブ鍵を生成する必要がある。
LS
i
は、ラウンドを示すiの値に依存した1ビットある いは2ビットの左巡回シフトを表す。各ラウンドに対して次のように定めら れている。
PC-1(64bits⇒56bits)
57
49
41
33
25
17
9
1
58
50
42
34
26
18
10
2
59
51
43
35
27
19
11
3
60
52
44
36
63
55
47
39
31
23
15
7
62
54
46
38
30
22
14
6
61
53
45
37
29
21
13
5
28
20
12
4
PC-2(56bits⇒48bits)
14
17
11
24
1
5
3
28
15
6
21
10
23
19
12
4
26
8
16
7
27
20
13
2
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32
16進数で16桁の鍵【k】を入力せよ:
133457799BBCDFF1
鍵【k】から各バイトの最下位ビットを取り除く(パリティチェック用)
転置PC-1とPC-2
転置PC-1とPC-2の詳細を表示
PC-1(64bits⇒56bits)
57
49
41
33
25
17
9
1
58
50
42
34
26
18
10
2
59
51
43
35
27
19
11
3
60
52
44
36
63
55
47
39
31
23
15
7
62
54
46
38
30
22
14
6
61
53
45
37
29
21
13
5
28
20
12
4
PC-2(56bits⇒48bits)
14
17
11
24
1
5
3
28
15
6
21
10
23
19
12
4
26
8
16
7
27
20
13
2
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32
鍵【K】に置換PC-1を適用し、左右32ビットブロック
C
0
と
D
0
を作成
C
0
D
0
すべての鍵【
K
1
〜
K
16
】を作成
詳細を表示してすべての鍵【
K
1
〜
K
16
】を作成
ラウンド鍵1【
K
1
】を作成
【K
1
】生成処理の詳細を表示
【ラウンド鍵1《K
1
》】処理の詳細
左巡回シフト
LS
1
をそれぞれ
C
0
と
D
0
に適用し、
C
1
と
D
1
を生成
C
1
D
1
C
1
と
D
1
にPC-2を適用してラウンド1用のサブ鍵
K
1
を作成
★
K
1
ラウンド鍵2【
K
2
】を作成
【K
2
】生成処理の詳細を表示
【ラウンド鍵2《K
2
》】処理の詳細
左巡回シフト
LS
2
をそれぞれ
C
1
と
D
1
に適用し、
C
2
と
D
2
を生成
C
2
D
2
C
2
と
D
2
にPC-2を適用してラウンド2用のサブ鍵
K
2
を作成
★
K
2
ラウンド鍵3【
K
3
】を作成
【K
3
】生成処理の詳細を表示
【ラウンド鍵3《K
3
》】処理の詳細
左巡回シフト
LS
3
をそれぞれ
C
2
と
D
2
に適用し、
C
3
と
D
3
を生成
C
3
D
3
C
3
と
D
3
にPC-2を適用してラウンド3用のサブ鍵
K
3
を作成
★
K
3
ラウンド鍵4【
K
4
】を作成
【K
4
】生成処理の詳細を表示
【ラウンド鍵4《K
4
》】処理の詳細
左巡回シフト
LS
4
をそれぞれ
C
3
と
D
3
に適用し、
C
4
と
D
4
を生成
C
4
D
4
C
4
と
D
4
にPC-2を適用してラウンド4用のサブ鍵
K
4
を作成
★
K
4
ラウンド鍵5【
K
5
】を作成
【K
5
】生成処理の詳細を表示
【ラウンド鍵5《K
5
》】処理の詳細
左巡回シフト
LS
5
をそれぞれ
C
4
と
D
4
に適用し、
C
5
と
D
5
を生成
C
5
D
5
C
5
と
D
5
にPC-2を適用してラウンド5用のサブ鍵
K
5
を作成
★
K
5
ラウンド鍵6【
K
6
】を作成
【K
6
】生成処理の詳細を表示
【ラウンド鍵6《K
6
》】処理の詳細
左巡回シフト
LS
6
をそれぞれ
C
5
と
D
5
に適用し、
C
6
と
D
6
を生成
C
6
D
6
C
6
と
D
6
にPC-2を適用してラウンド6用のサブ鍵
K
6
を作成
★
K
6
ラウンド鍵7【
K
7
】を作成
【K
7
】生成処理の詳細を表示
【ラウンド鍵7《K
7
》】処理の詳細
左巡回シフト
LS
7
をそれぞれ
C
6
と
D
6
に適用し、
C
7
と
D
7
を生成
C
7
D
7
C
7
と
D
7
にPC-2を適用してラウンド7用のサブ鍵
K
7
を作成
★
K
7
ラウンド鍵8【
K
8
】を作成
【K
8
】生成処理の詳細を表示
【ラウンド鍵8《K
8
》】処理の詳細
左巡回シフト
LS
8
をそれぞれ
C
7
と
D
7
に適用し、
C
8
と
D
8
を生成
C
8
D
8
C
8
と
D
8
にPC-2を適用してラウンド8用のサブ鍵
K
8
を作成
★
K
8
ラウンド鍵9【
K
9
】を作成
【K
9
】生成処理の詳細を表示
【ラウンド鍵9《K
9
》】処理の詳細
左巡回シフト
LS
9
をそれぞれ
C
8
と
D
8
に適用し、
C
9
と
D
9
を生成
C
9
D
9
C
9
と
D
9
にPC-2を適用してラウンド9用のサブ鍵
K
9
を作成
★
K
9
ラウンド鍵10【
K
10
】を作成
【K
10
】生成処理の詳細を表示
【ラウンド鍵10《K
10
》】処理の詳細
左巡回シフト
LS
10
をそれぞれ
C
9
と
D
9
に適用し、
C
10
と
D
10
を生成
C
10
D
10
C
10
と
D
10
にPC-2を適用してラウンド10用のサブ鍵
K
10
を作成
★
K
10
ラウンド鍵11【
K
11
】を作成
【K
11
】生成処理の詳細を表示
【ラウンド鍵11《K
11
》】処理の詳細
左巡回シフト
LS
11
をそれぞれ
C
10
と
D
10
に適用し、
C
11
と
D
11
を生成
C
11
D
11
C
11
と
D
11
にPC-2を適用してラウンド11用のサブ鍵
K
11
を作成
★
K
11
ラウンド鍵12【
K
12
】を作成
【K
12
】生成処理の詳細を表示
【ラウンド鍵12《K
12
》】処理の詳細
左巡回シフト
LS
12
をそれぞれ
C
11
と
D
11
に適用し、
C
12
と
D
12
を生成
C
12
D
12
C
12
と
D
12
にPC-2を適用してラウンド12用のサブ鍵
K
12
を作成
★
K
12
ラウンド鍵13【
K
13
】を作成
【K
13
】生成処理の詳細を表示
【ラウンド鍵13《K
13
》】処理の詳細
左巡回シフト
LS
13
をそれぞれ
C
12
と
D
12
に適用し、
C
13
と
D
13
を生成
C
13
D
13
C
13
と
D
13
にPC-2を適用してラウンド13用のサブ鍵
K
13
を作成
★
K
13
ラウンド鍵14【
K
14
】を作成
【K
14
】生成処理の詳細を表示
【ラウンド鍵14《K
14
》】処理の詳細
左巡回シフト
LS
14
をそれぞれ
C
13
と
D
13
に適用し、
C
14
と
D
14
を生成
C
14
D
14
C
14
と
D
14
にPC-2を適用してラウンド14用のサブ鍵
K
14
を作成
★
K
14
ラウンド鍵15【
K
15
】を作成
【K
15
】生成処理の詳細を表示
【ラウンド鍵15《K
15
》】処理の詳細
左巡回シフト
LS
15
をそれぞれ
C
14
と
D
14
に適用し、
C
15
と
D
15
を生成
C
15
D
15
C
15
と
D
15
にPC-2を適用してラウンド15用のサブ鍵
K
15
を作成
★
K
15
ラウンド鍵16【
K
16
】を作成
【K
16
】生成処理の詳細を表示
【ラウンド鍵16《K
16
》】処理の詳細
左巡回シフト
LS
16
をそれぞれ
C
15
と
D
15
に適用し、
C
16
と
D
16
を生成
C
16
D
16
C
16
と
D
16
にPC-2を適用してラウンド16用のサブ鍵
K
16
を作成
★
K
16
Step 2:DES暗号の詳細
左の図は、DES暗号の全体処理を表している。全体は同じような16個のラウンド 処理を含む。右の図は各ラウンド処理の詳細を示している。
図:DES暗号化流れ
図:DES復号の流れ
図:DESの1ラウンドとf関数の流れ
初期転置IP、逆初期転置
IP
-1
、 拡大転置
EP
、
P
転置(
P Box
)
IP(初期転置)
58
50
42
34
26
18
10
2
60
52
44
36
28
20
12
4
62
54
46
38
30
22
14
6
64
56
48
40
32
24
16
8
57
49
41
33
25
17
9
1
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
63
55
47
39
31
23
15
7
IP
-1
(逆初期転置)
40
8
48
16
56
24
64
32
39
7
47
15
55
23
63
31
38
6
46
14
54
22
62
30
37
5
45
13
53
21
61
29
36
4
44
12
52
20
60
28
35
3
43
11
51
19
59
27
34
2
42
10
50
18
58
26
33
1
41
9
49
17
57
25
EP(拡大転置)
32
1
2
3
4
5
4
5
6
7
8
9
8
9
10
11
12
13
12
13
14
15
16
17
16
17
18
19
20
21
20
21
22
23
24
25
24
25
26
27
28
29
28
29
30
31
32
1
P Box(P転置)
16
7
20
21
29
12
28
17
1
15
23
26
5
18
31
10
2
8
24
14
32
27
3
9
19
13
30
6
22
11
4
25
8つの
S Box
:
全てを表示
S
1
を表示
S
2
を表示
S
3
を表示
S
4
を表示
S
5
を表示
S
6
を表示
S
7
を表示
S
8
を表示
S
1
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
1110
0100
1101
0001
0010
1111
1011
1000
0011
1010
0110
1100
0101
1001
0000
0111
01
0000
1111
0111
0100
1110
0010
1101
0001
1010
0110
1100
1011
1001
0101
0011
1000
10
0100
0001
1110
1000
1101
0110
0010
1011
1111
1100
1001
0111
0011
1010
0101
0000
11
1111
1100
1000
0010
0100
1001
0001
0111
0101
1011
0011
1110
1010
0000
0110
1101
S
2
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
1111
0001
1000
1110
0110
1011
0011
0100
1001
0111
0010
1101
1100
0000
0101
1010
01
0011
1101
0100
0111
1111
0010
1000
1110
1100
0000
0001
1010
0110
1001
1011
0101
10
0000
1110
0111
1011
1010
0100
1101
0001
0101
1000
1100
0110
1001
0011
0010
1111
11
1101
1000
1010
0001
0011
1111
0100
0010
1011
0110
0111
1100
0000
0101
1110
1001
S
3
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
1010
0000
1001
1110
0110
0011
1111
0101
0001
1101
1100
0111
1011
0100
0010
1000
01
1101
0111
0000
1001
0011
0100
0110
1010
0010
1000
0101
1110
1100
1011
1111
0001
10
1101
0110
0100
1001
1000
1111
0011
0000
1011
0001
0010
1100
0101
1010
1110
0111
11
0001
1010
1101
0000
0110
1001
1000
0111
0100
1111
1110
0011
1011
0101
0010
1100
S
4
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
0111
1101
1110
0011
0000
0110
1001
1010
0001
0010
1000
0101
1011
1100
0100
1111
01
1101
1000
1011
0101
0110
1111
0000
0011
0100
0111
0010
1100
0001
1010
1110
1001
10
1010
0110
1001
0000
1100
1011
0111
1101
1111
0001
0011
1110
0101
0010
1000
0100
11
0011
1111
0000
0110
1010
0001
1101
1000
1001
0100
0101
1011
1100
0111
0010
1110
S
5
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
0010
1100
0100
0001
0111
1100
1011
0110
1000
0101
0011
1111
1101
0000
1110
1001
01
1110
1011
0010
1100
0100
0111
1101
0001
0101
0000
1111
1100
0011
1001
1000
0110
10
0100
0010
0001
1011
1100
1101
0111
1000
1111
1001
1100
0101
0110
0011
0000
1110
11
1011
1000
1100
0111
0001
1110
0010
1101
0110
1111
0000
1001
1100
0100
0101
0011
S
6
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
1100
0001
1010
1111
1001
0010
0110
1000
0000
1101
0011
0100
1110
0111
0101
1011
01
1010
1111
0100
0010
0111
1100
1001
0101
0110
0001
1101
1110
0000
1011
0011
1000
10
1001
1110
1111
0101
0010
1000
1100
0011
0111
0000
0100
1010
0001
1101
1011
0110
11
0100
0011
0010
1100
1001
0101
1111
1010
1011
1110
0001
0111
0110
0000
1000
1101
S
7
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
0100
1011
0010
1110
1111
0000
1000
1101
0011
1100
1001
0111
0101
1010
0110
0001
01
1101
0000
1011
0111
0100
1001
0001
1010
1110
0011
0101
1100
0010
1111
1000
0110
10
0001
0100
1011
1101
1100
0011
0111
1110
1010
1111
0110
1000
0000
0101
1001
0010
11
0110
1011
1101
1000
0001
0100
1010
0111
1001
0101
0000
1111
1110
0010
0011
1100
S
8
Middle 4 bits of input(中間にある4ビット)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
Outer
2 bits
(外側
2ビット)
00
1101
0010
1000
0100
0110
1111
1011
0001
1010
1001
0011
1110
0101
0000
1100
0111
01
0001
1111
1101
1000
1010
0011
0111
0100
1100
0101
0110
1011
0000
1110
1001
0010
10
0111
1011
0100
0001
1001
1100
1110
0010
0000
0110
1010
1101
1111
0011
0101
1000
11
0010
0001
1110
0111
0100
1010
1000
1101
1111
1100
1001
0000
0011
0101
0110
1011
16進数で16桁の平文ブロック【
PT
】を入力せよ:
0123456789ABCDEF
平文【
PT
】を64ビットの2進数に変換
平文【
PT
】に初期転置
IP
を適用し、
L
0
と
R
0
を生成
L
0
R
0
【ラウンド1】処理の詳細
R
0
に拡張転置EPを適用して【
EP(R
0
)】を生成
ラウンド1:(
L
0
,
R
0
)⇒ (
L
1
,
R
1
)
☆
EP(R
0
)
★
K
1
K
1
と
EP(R
0
)
の排他的論理和を計算し、生成
☆
K
1
⊕EP(R
0
)
同時に、上記の
K
1
⊕EP(R
0
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
1
⊕EP(R
0
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
0
, K
1
) = P(S(K
1
⊕EP(R
0
)))
上記の
P Box
の結果と
L
0
を
XOR
した結果を
R
1
として、
R
0
を
L
1
として生成
L
1
(=R
0
)
R
1
(=L
0
⊕f(R
0
, K
1
))
【ラウンド2】処理の詳細
R
1
に拡張転置EPを適用して【
EP(R
1
)】を生成
ラウンド2:(
L
1
,
R
1
)⇒ (
L
2
,
R
2
)
☆
EP(R
1
)
★
K
2
K
2
と
EP(R
1
)
の排他的論理和を計算し、生成
☆
K
2
⊕EP(R
1
)
同時に、上記の
K
2
⊕EP(R
1
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
2
⊕EP(R
1
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
1
, K
2
) = P(S(K
2
⊕EP(R
1
)))
上記の
P Box
の結果と
L
1
を
XOR
した結果を
R
2
として、
R
1
を
L
2
として生成
L
2
(=R
1
)
R
2
(=L
1
⊕f(R
1
, K
2
))
【ラウンド3】処理の詳細
R
2
に拡張転置EPを適用して【
EP(R
2
)】を生成
ラウンド3:(
L
2
,
R
2
)⇒ (
L
3
,
R
3
)
☆
EP(R
2
)
★
K
3
K
3
と
EP(R
2
)
の排他的論理和を計算し、生成
☆
K
3
⊕EP(R
2
)
同時に、上記の
K
3
⊕EP(R
2
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
3
⊕EP(R
2
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
2
, K
3
) = P(S(K
3
⊕EP(R
2
)))
上記の
P Box
の結果と
L
2
を
XOR
した結果を
R
3
として、
R
2
を
L
3
として生成
L
3
(=R
2
)
R
3
(=L
2
⊕f(R
2
, K
3
))
【ラウンド4】処理の詳細
R
3
に拡張転置EPを適用して【
EP(R
3
)】を生成
ラウンド4:(
L
3
,
R
3
)⇒ (
L
4
,
R
4
)
☆
EP(R
3
)
★
K
4
K
4
と
EP(R
3
)
の排他的論理和を計算し、生成
☆
K
4
⊕EP(R
3
)
同時に、上記の
K
4
⊕EP(R
3
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
4
⊕EP(R
3
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
3
, K
4
) = P(S(K
4
⊕EP(R
3
)))
上記の
P Box
の結果と
L
3
を
XOR
した結果を
R
4
として、
R
3
を
L
4
として生成
L
4
(=R
3
)
R
4
(=L
3
⊕f(R
3
, K
4
))
【ラウンド5】処理の詳細
R
4
に拡張転置EPを適用して【
EP(R
4
)】を生成
ラウンド5:(
L
4
,
R
4
)⇒ (
L
5
,
R
5
)
☆
EP(R
4
)
★
K
5
K
5
と
EP(R
4
)
の排他的論理和を計算し、生成
☆
K
5
⊕EP(R
4
)
同時に、上記の
K
5
⊕EP(R
4
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
5
⊕EP(R
4
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
4
, K
5
) = P(S(K
5
⊕EP(R
4
)))
上記の
P Box
の結果と
L
4
を
XOR
した結果を
R
5
として、
R
4
を
L
5
として生成
L
5
(=R
4
)
R
5
(=L
4
⊕f(R
4
, K
5
))
【ラウンド6】処理の詳細
R
5
に拡張転置EPを適用して【
EP(R
5
)】を生成
ラウンド6:(
L
5
,
R
5
)⇒ (
L
6
,
R
6
)
☆
EP(R
5
)
★
K
6
K
6
と
EP(R
5
)
の排他的論理和を計算し、生成
☆
K
6
⊕EP(R
5
)
同時に、上記の
K
6
⊕EP(R
5
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
6
⊕EP(R
5
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
5
, K
6
) = P(S(K
6
⊕EP(R
5
)))
上記の
P Box
の結果と
L
5
を
XOR
した結果を
R
6
として、
R
5
を
L
6
として生成
L
6
(=R
5
)
R
6
(=L
5
⊕f(R
5
, K
6
))
【ラウンド7】処理の詳細
R
6
に拡張転置EPを適用して【
EP(R
6
)】を生成
ラウンド7:(
L
6
,
R
6
)⇒ (
L
7
,
R
7
)
☆
EP(R
6
)
★
K
7
K
7
と
EP(R
6
)
の排他的論理和を計算し、生成
☆
K
7
⊕EP(R
6
)
同時に、上記の
K
7
⊕EP(R
6
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
7
⊕EP(R
6
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
6
, K
7
) = P(S(K
7
⊕EP(R
6
)))
上記の
P Box
の結果と
L
6
を
XOR
した結果を
R
7
として、
R
6
を
L
7
として生成
L
7
(=R
6
)
R
7
(=L
6
⊕f(R
6
, K
7
))
【ラウンド8】処理の詳細
R
7
に拡張転置EPを適用して【
EP(R
7
)】を生成
ラウンド8:(
L
7
,
R
7
)⇒ (
L
8
,
R
8
)
☆
EP(R
7
)
★
K
8
K
8
と
EP(R
7
)
の排他的論理和を計算し、生成
☆
K
8
⊕EP(R
7
)
同時に、上記の
K
8
⊕EP(R
7
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
8
⊕EP(R
7
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
7
, K
8
) = P(S(K
8
⊕EP(R
7
)))
上記の
P Box
の結果と
L
7
を
XOR
した結果を
R
8
として、
R
7
を
L
8
として生成
L
8
(=R
7
)
R
8
(=L
7
⊕f(R
7
, K
8
))
【ラウンド9】処理の詳細
R
8
に拡張転置EPを適用して【
EP(R
8
)】を生成
ラウンド9:(
L
8
,
R
8
)⇒ (
L
9
,
R
9
)
☆
EP(R
8
)
★
K
9
K
9
と
EP(R
8
)
の排他的論理和を計算し、生成
☆
K
9
⊕EP(R
8
)
同時に、上記の
K
9
⊕EP(R
8
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
9
⊕EP(R
8
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
8
, K
9
) = P(S(K
9
⊕EP(R
8
)))
上記の
P Box
の結果と
L
8
を
XOR
した結果を
R
9
として、
R
8
を
L
9
として生成
L
9
(=R
8
)
R
9
(=L
8
⊕f(R
8
, K
9
))
【ラウンド10】処理の詳細
R
9
に拡張転置EPを適用して【
EP(R
9
)】を生成
ラウンド10:(
L
9
,
R
9
)⇒ (
L
10
,
R
10
)
☆
EP(R
9
)
★
K
10
K
10
と
EP(R
9
)
の排他的論理和を計算し、生成
☆
K
10
⊕EP(R
9
)
同時に、上記の
K
10
⊕EP(R
9
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
10
⊕EP(R
9
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
9
, K
10
) = P(S(K
10
⊕EP(R
9
)))
上記の
P Box
の結果と
L
9
を
XOR
した結果を
R
10
として、
R
9
を
L
10
として生成
L
10
(=R
9
)
R
10
(=L
9
⊕f(R
9
, K
10
))
【ラウンド11】処理の詳細
R
10
に拡張転置EPを適用して【
EP(R
10
)】を生成
ラウンド11:(
L
10
,
R
10
)⇒ (
L
11
,
R
11
)
☆
EP(R
10
)
★
K
11
K
11
と
EP(R
10
)
の排他的論理和を計算し、生成
☆
K
11
⊕EP(R
10
)
同時に、上記の
K
11
⊕EP(R
10
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
11
⊕EP(R
10
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
10
, K
11
) = P(S(K
11
⊕EP(R
10
)))
上記の
P Box
の結果と
L
10
を
XOR
した結果を
R
11
として、
R
10
を
L
11
として生成
L
11
(=R
10
)
R
11
(=L
10
⊕f(R
10
, K
11
))
【ラウンド12】処理の詳細
R
11
に拡張転置EPを適用して【
EP(R
11
)】を生成
ラウンド12:(
L
11
,
R
11
)⇒ (
L
12
,
R
12
)
☆
EP(R
11
)
★
K
12
K
12
と
EP(R
11
)
の排他的論理和を計算し、生成
☆
K
12
⊕EP(R
11
)
同時に、上記の
K
12
⊕EP(R
11
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
12
⊕EP(R
11
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
11
, K
12
) = P(S(K
12
⊕EP(R
11
)))
上記の
P Box
の結果と
L
11
を
XOR
した結果を
R
12
として、
R
11
を
L
12
として生成
L
12
(=R
11
)
R
12
(=L
11
⊕f(R
11
, K
12
))
【ラウンド13】処理の詳細
R
12
に拡張転置EPを適用して【
EP(R
12
)】を生成
ラウンド13:(
L
12
,
R
12
)⇒ (
L
13
,
R
13
)
☆
EP(R
12
)
★
K
13
K
13
と
EP(R
12
)
の排他的論理和を計算し、生成
☆
K
13
⊕EP(R
12
)
同時に、上記の
K
13
⊕EP(R
12
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
13
⊕EP(R
12
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
12
, K
13
) = P(S(K
13
⊕EP(R
12
)))
上記の
P Box
の結果と
L
12
を
XOR
した結果を
R
13
として、
R
12
を
L
13
として生成
L
13
(=R
12
)
R
13
(=L
12
⊕f(R
12
, K
13
))
【ラウンド14】処理の詳細
R
13
に拡張転置EPを適用して【
EP(R
13
)】を生成
ラウンド14:(
L
13
,
R
13
)⇒ (
L
14
,
R
14
)
☆
EP(R
13
)
★
K
14
K
14
と
EP(R
13
)
の排他的論理和を計算し、生成
☆
K
14
⊕EP(R
13
)
同時に、上記の
K
14
⊕EP(R
13
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
14
⊕EP(R
13
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
13
, K
14
) = P(S(K
14
⊕EP(R
13
)))
上記の
P Box
の結果と
L
13
を
XOR
した結果を
R
14
として、
R
13
を
L
14
として生成
L
14
(=R
13
)
R
14
(=L
13
⊕f(R
13
, K
14
))
【ラウンド15】処理の詳細
R
14
に拡張転置EPを適用して【
EP(R
14
)】を生成
ラウンド15:(
L
14
,
R
14
)⇒ (
L
15
,
R
15
)
☆
EP(R
14
)
★
K
15
K
15
と
EP(R
14
)
の排他的論理和を計算し、生成
☆
K
15
⊕EP(R
14
)
同時に、上記の
K
15
⊕EP(R
14
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
15
⊕EP(R
14
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
14
, K
15
) = P(S(K
15
⊕EP(R
14
)))
上記の
P Box
の結果と
L
14
を
XOR
した結果を
R
15
として、
R
14
を
L
15
として生成
L
15
(=R
14
)
R
15
(=L
14
⊕f(R
14
, K
15
))
【ラウンド16】処理の詳細
R
15
に拡張転置EPを適用して【
EP(R
15
)】を生成
ラウンド16:(
L
15
,
R
15
)⇒ (
L
16
,
R
16
)
☆
EP(R
15
)
★
K
16
K
16
と
EP(R
15
)
の排他的論理和を計算し、生成
☆
K
16
⊕EP(R
15
)
同時に、上記の
K
16
⊕EP(R
15
)
の結果を8つの6ビットグループに
上記に8つのグループに順番に
S
1
、
S
2
、
S
3
、
S
4
、
S
5
、
S
6
、
S
7
、
S
8
の
S Box
置換処理を適用する
下記32ビットを生成する
S(K
16
⊕EP(R
15
))
上記の
S Box
の結果に
P Box
転置を適用
f(R
15
, K
16
) = P(S(K
16
⊕EP(R
15
)))
上記の
P Box
の結果と
L
15
を
XOR
した結果を
R
16
として、
R
15
を
L
16
として生成
R
16
(=L
15
⊕f(R
15
, K
16
))
L
16
(=R
15
)
【
R16L16
】に逆初期転置
IP
-1
を適用し、 暗号文【
CT
】の2進表現を生成
暗号文【
CT
】を16進数に変換