line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
#!/usr/bin/perl -w |
2
|
|
|
|
|
|
|
# $Id: Rijndael_PP.pm,v 1.21 2010/09/22 13:31:36 lackas Exp $ |
3
|
|
|
|
|
|
|
package Crypt::Rijndael_PP; |
4
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
require 5.004; |
6
|
5
|
|
|
5
|
|
11372
|
use strict; |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
156
|
|
7
|
5
|
|
|
5
|
|
4756
|
use integer; |
|
5
|
|
|
|
|
48
|
|
|
5
|
|
|
|
|
23
|
|
8
|
5
|
|
|
5
|
|
160
|
use Carp; |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
557
|
|
9
|
|
|
|
|
|
|
|
10
|
5
|
|
|
5
|
|
26
|
use vars qw'$VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS @ISA'; |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
1488
|
|
11
|
|
|
|
|
|
|
require Exporter; |
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
@ISA = 'Exporter'; |
14
|
|
|
|
|
|
|
$VERSION = 0.05; |
15
|
|
|
|
|
|
|
@EXPORT_OK = qw( |
16
|
|
|
|
|
|
|
blockDecrypt blockEncrypt blockEncryptRound blockDecryptRound |
17
|
|
|
|
|
|
|
cipherUpdateRounds cipherInit makeKey |
18
|
|
|
|
|
|
|
MODE_ECB MODE_CBC MODE_CFB1 |
19
|
|
|
|
|
|
|
DIR_ENCRYPT DIR_DECRYPT |
20
|
|
|
|
|
|
|
); |
21
|
|
|
|
|
|
|
@EXPORT = qw(rijndael_encrypt rijndael_decrypt); |
22
|
|
|
|
|
|
|
%EXPORT_TAGS = ( |
23
|
|
|
|
|
|
|
all => [@EXPORT_OK,@EXPORT], |
24
|
|
|
|
|
|
|
modes => [qw(MODE_ECB MODE_CBC MODE_CFB1)], |
25
|
|
|
|
|
|
|
directions => [qw(DIR_ENCRYPT DIR_DECRYPT)], |
26
|
|
|
|
|
|
|
CAPI => [qw(cipherInit makeKey blockDecrypt blockEncrypt)] |
27
|
|
|
|
|
|
|
); |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
# boxes-ref.dat |
31
|
5
|
|
|
|
|
1382
|
use constant Logtable => [ |
32
|
|
|
|
|
|
|
0, 0, 25, 1, 50, 2, 26, 198, 75, 199, 27, 104, 51, 238, 223, 3, |
33
|
|
|
|
|
|
|
100, 4, 224, 14, 52, 141, 129, 239, 76, 113, 8, 200, 248, 105, 28, 193, |
34
|
|
|
|
|
|
|
125, 194, 29, 181, 249, 185, 39, 106, 77, 228, 166, 114, 154, 201, 9, 120, |
35
|
|
|
|
|
|
|
101, 47, 138, 5, 33, 15, 225, 36, 18, 240, 130, 69, 53, 147, 218, 142, |
36
|
|
|
|
|
|
|
150, 143, 219, 189, 54, 208, 206, 148, 19, 92, 210, 241, 64, 70, 131, 56, |
37
|
|
|
|
|
|
|
102, 221, 253, 48, 191, 6, 139, 98, 179, 37, 226, 152, 34, 136, 145, 16, |
38
|
|
|
|
|
|
|
126, 110, 72, 195, 163, 182, 30, 66, 58, 107, 40, 84, 250, 133, 61, 186, |
39
|
|
|
|
|
|
|
43, 121, 10, 21, 155, 159, 94, 202, 78, 212, 172, 229, 243, 115, 167, 87, |
40
|
|
|
|
|
|
|
175, 88, 168, 80, 244, 234, 214, 116, 79, 174, 233, 213, 231, 230, 173, 232, |
41
|
|
|
|
|
|
|
44, 215, 117, 122, 235, 22, 11, 245, 89, 203, 95, 176, 156, 169, 81, 160, |
42
|
|
|
|
|
|
|
127, 12, 246, 111, 23, 196, 73, 236, 216, 67, 31, 45, 164, 118, 123, 183, |
43
|
|
|
|
|
|
|
204, 187, 62, 90, 251, 96, 177, 134, 59, 82, 161, 108, 170, 85, 41, 157, |
44
|
|
|
|
|
|
|
151, 178, 135, 144, 97, 190, 220, 252, 188, 149, 207, 205, 55, 63, 91, 209, |
45
|
|
|
|
|
|
|
83, 57, 132, 60, 65, 162, 109, 71, 20, 42, 158, 93, 86, 242, 211, 171, |
46
|
|
|
|
|
|
|
68, 17, 146, 217, 35, 32, 46, 137, 180, 124, 184, 38, 119, 153, 227, 165, |
47
|
|
|
|
|
|
|
103, 74, 237, 222, 197, 49, 254, 24, 13, 99, 140, 128, 192, 247, 112, 7 |
48
|
5
|
|
|
5
|
|
28
|
]; |
|
5
|
|
|
|
|
10
|
|
49
|
|
|
|
|
|
|
|
50
|
5
|
|
|
|
|
56611
|
use constant Algotable => [ |
51
|
|
|
|
|
|
|
1, 3, 5, 15, 17, 51, 85, 255, 26, 46, 114, 150, 161, 248, 19, 53, |
52
|
|
|
|
|
|
|
95, 225, 56, 72, 216, 115, 149, 164, 247, 2, 6, 10, 30, 34, 102, 170, |
53
|
|
|
|
|
|
|
229, 52, 92, 228, 55, 89, 235, 38, 106, 190, 217, 112, 144, 171, 230, 49, |
54
|
|
|
|
|
|
|
83, 245, 4, 12, 20, 60, 68, 204, 79, 209, 104, 184, 211, 110, 178, 205, |
55
|
|
|
|
|
|
|
76, 212, 103, 169, 224, 59, 77, 215, 98, 166, 241, 8, 24, 40, 120, 136, |
56
|
|
|
|
|
|
|
131, 158, 185, 208, 107, 189, 220, 127, 129, 152, 179, 206, 73, 219, 118, 154, |
57
|
|
|
|
|
|
|
181, 196, 87, 249, 16, 48, 80, 240, 11, 29, 39, 105, 187, 214, 97, 163, |
58
|
|
|
|
|
|
|
254, 25, 43, 125, 135, 146, 173, 236, 47, 113, 147, 174, 233, 32, 96, 160, |
59
|
|
|
|
|
|
|
251, 22, 58, 78, 210, 109, 183, 194, 93, 231, 50, 86, 250, 21, 63, 65, |
60
|
|
|
|
|
|
|
195, 94, 226, 61, 71, 201, 64, 192, 91, 237, 44, 116, 156, 191, 218, 117, |
61
|
|
|
|
|
|
|
159, 186, 213, 100, 172, 239, 42, 126, 130, 157, 188, 223, 122, 142, 137, 128, |
62
|
|
|
|
|
|
|
155, 182, 193, 88, 232, 35, 101, 175, 234, 37, 111, 177, 200, 67, 197, 84, |
63
|
|
|
|
|
|
|
252, 31, 33, 99, 165, 244, 7, 9, 27, 45, 119, 153, 176, 203, 70, 202, |
64
|
|
|
|
|
|
|
69, 207, 74, 222, 121, 139, 134, 145, 168, 227, 62, 66, 198, 81, 243, 14, |
65
|
|
|
|
|
|
|
18, 54, 90, 238, 41, 123, 141, 140, 143, 138, 133, 148, 167, 242, 13, 23, |
66
|
|
|
|
|
|
|
57, 75, 221, 124, 132, 151, 162, 253, 28, 36, 108, 180, 199, 82, 246, 1 |
67
|
5
|
|
|
5
|
|
28
|
]; |
|
5
|
|
|
|
|
9
|
|
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
my @S = ( |
70
|
|
|
|
|
|
|
99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, |
71
|
|
|
|
|
|
|
202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, |
72
|
|
|
|
|
|
|
183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, |
73
|
|
|
|
|
|
|
4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, |
74
|
|
|
|
|
|
|
9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, |
75
|
|
|
|
|
|
|
83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, |
76
|
|
|
|
|
|
|
208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, |
77
|
|
|
|
|
|
|
81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, |
78
|
|
|
|
|
|
|
205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, |
79
|
|
|
|
|
|
|
96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, |
80
|
|
|
|
|
|
|
224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, |
81
|
|
|
|
|
|
|
231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, |
82
|
|
|
|
|
|
|
186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, |
83
|
|
|
|
|
|
|
112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, |
84
|
|
|
|
|
|
|
225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, |
85
|
|
|
|
|
|
|
140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22 |
86
|
|
|
|
|
|
|
); |
87
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
my @Si = ( |
89
|
|
|
|
|
|
|
82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, |
90
|
|
|
|
|
|
|
124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, |
91
|
|
|
|
|
|
|
84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, |
92
|
|
|
|
|
|
|
8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, |
93
|
|
|
|
|
|
|
114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, |
94
|
|
|
|
|
|
|
108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, |
95
|
|
|
|
|
|
|
144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, |
96
|
|
|
|
|
|
|
208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, |
97
|
|
|
|
|
|
|
58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, |
98
|
|
|
|
|
|
|
150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, |
99
|
|
|
|
|
|
|
71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, |
100
|
|
|
|
|
|
|
252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, |
101
|
|
|
|
|
|
|
31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, |
102
|
|
|
|
|
|
|
96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, |
103
|
|
|
|
|
|
|
160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, |
104
|
|
|
|
|
|
|
23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 |
105
|
|
|
|
|
|
|
); |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
my @iG = ( |
108
|
|
|
|
|
|
|
[ 0x0e, 0x09, 0x0d, 0x0b ], |
109
|
|
|
|
|
|
|
[ 0x0b, 0x0e, 0x09, 0x0d ], |
110
|
|
|
|
|
|
|
[ 0x0d, 0x0b, 0x0e, 0x09 ], |
111
|
|
|
|
|
|
|
[ 0x09, 0x0d, 0x0b, 0x0e ] |
112
|
|
|
|
|
|
|
); |
113
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
my @rcon = ( |
115
|
|
|
|
|
|
|
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, |
116
|
|
|
|
|
|
|
0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, |
117
|
|
|
|
|
|
|
0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, |
118
|
|
|
|
|
|
|
0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 |
119
|
|
|
|
|
|
|
); |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
my @T1 = ( |
122
|
|
|
|
|
|
|
[0xc6,0x63,0x63,0xa5], [0xf8,0x7c,0x7c,0x84], [0xee,0x77,0x77,0x99], [0xf6,0x7b,0x7b,0x8d], |
123
|
|
|
|
|
|
|
[0xff,0xf2,0xf2,0x0d], [0xd6,0x6b,0x6b,0xbd], [0xde,0x6f,0x6f,0xb1], [0x91,0xc5,0xc5,0x54], |
124
|
|
|
|
|
|
|
[0x60,0x30,0x30,0x50], [0x02,0x01,0x01,0x03], [0xce,0x67,0x67,0xa9], [0x56,0x2b,0x2b,0x7d], |
125
|
|
|
|
|
|
|
[0xe7,0xfe,0xfe,0x19], [0xb5,0xd7,0xd7,0x62], [0x4d,0xab,0xab,0xe6], [0xec,0x76,0x76,0x9a], |
126
|
|
|
|
|
|
|
[0x8f,0xca,0xca,0x45], [0x1f,0x82,0x82,0x9d], [0x89,0xc9,0xc9,0x40], [0xfa,0x7d,0x7d,0x87], |
127
|
|
|
|
|
|
|
[0xef,0xfa,0xfa,0x15], [0xb2,0x59,0x59,0xeb], [0x8e,0x47,0x47,0xc9], [0xfb,0xf0,0xf0,0x0b], |
128
|
|
|
|
|
|
|
[0x41,0xad,0xad,0xec], [0xb3,0xd4,0xd4,0x67], [0x5f,0xa2,0xa2,0xfd], [0x45,0xaf,0xaf,0xea], |
129
|
|
|
|
|
|
|
[0x23,0x9c,0x9c,0xbf], [0x53,0xa4,0xa4,0xf7], [0xe4,0x72,0x72,0x96], [0x9b,0xc0,0xc0,0x5b], |
130
|
|
|
|
|
|
|
[0x75,0xb7,0xb7,0xc2], [0xe1,0xfd,0xfd,0x1c], [0x3d,0x93,0x93,0xae], [0x4c,0x26,0x26,0x6a], |
131
|
|
|
|
|
|
|
[0x6c,0x36,0x36,0x5a], [0x7e,0x3f,0x3f,0x41], [0xf5,0xf7,0xf7,0x02], [0x83,0xcc,0xcc,0x4f], |
132
|
|
|
|
|
|
|
[0x68,0x34,0x34,0x5c], [0x51,0xa5,0xa5,0xf4], [0xd1,0xe5,0xe5,0x34], [0xf9,0xf1,0xf1,0x08], |
133
|
|
|
|
|
|
|
[0xe2,0x71,0x71,0x93], [0xab,0xd8,0xd8,0x73], [0x62,0x31,0x31,0x53], [0x2a,0x15,0x15,0x3f], |
134
|
|
|
|
|
|
|
[0x08,0x04,0x04,0x0c], [0x95,0xc7,0xc7,0x52], [0x46,0x23,0x23,0x65], [0x9d,0xc3,0xc3,0x5e], |
135
|
|
|
|
|
|
|
[0x30,0x18,0x18,0x28], [0x37,0x96,0x96,0xa1], [0x0a,0x05,0x05,0x0f], [0x2f,0x9a,0x9a,0xb5], |
136
|
|
|
|
|
|
|
[0x0e,0x07,0x07,0x09], [0x24,0x12,0x12,0x36], [0x1b,0x80,0x80,0x9b], [0xdf,0xe2,0xe2,0x3d], |
137
|
|
|
|
|
|
|
[0xcd,0xeb,0xeb,0x26], [0x4e,0x27,0x27,0x69], [0x7f,0xb2,0xb2,0xcd], [0xea,0x75,0x75,0x9f], |
138
|
|
|
|
|
|
|
[0x12,0x09,0x09,0x1b], [0x1d,0x83,0x83,0x9e], [0x58,0x2c,0x2c,0x74], [0x34,0x1a,0x1a,0x2e], |
139
|
|
|
|
|
|
|
[0x36,0x1b,0x1b,0x2d], [0xdc,0x6e,0x6e,0xb2], [0xb4,0x5a,0x5a,0xee], [0x5b,0xa0,0xa0,0xfb], |
140
|
|
|
|
|
|
|
[0xa4,0x52,0x52,0xf6], [0x76,0x3b,0x3b,0x4d], [0xb7,0xd6,0xd6,0x61], [0x7d,0xb3,0xb3,0xce], |
141
|
|
|
|
|
|
|
[0x52,0x29,0x29,0x7b], [0xdd,0xe3,0xe3,0x3e], [0x5e,0x2f,0x2f,0x71], [0x13,0x84,0x84,0x97], |
142
|
|
|
|
|
|
|
[0xa6,0x53,0x53,0xf5], [0xb9,0xd1,0xd1,0x68], [0x00,0x00,0x00,0x00], [0xc1,0xed,0xed,0x2c], |
143
|
|
|
|
|
|
|
[0x40,0x20,0x20,0x60], [0xe3,0xfc,0xfc,0x1f], [0x79,0xb1,0xb1,0xc8], [0xb6,0x5b,0x5b,0xed], |
144
|
|
|
|
|
|
|
[0xd4,0x6a,0x6a,0xbe], [0x8d,0xcb,0xcb,0x46], [0x67,0xbe,0xbe,0xd9], [0x72,0x39,0x39,0x4b], |
145
|
|
|
|
|
|
|
[0x94,0x4a,0x4a,0xde], [0x98,0x4c,0x4c,0xd4], [0xb0,0x58,0x58,0xe8], [0x85,0xcf,0xcf,0x4a], |
146
|
|
|
|
|
|
|
[0xbb,0xd0,0xd0,0x6b], [0xc5,0xef,0xef,0x2a], [0x4f,0xaa,0xaa,0xe5], [0xed,0xfb,0xfb,0x16], |
147
|
|
|
|
|
|
|
[0x86,0x43,0x43,0xc5], [0x9a,0x4d,0x4d,0xd7], [0x66,0x33,0x33,0x55], [0x11,0x85,0x85,0x94], |
148
|
|
|
|
|
|
|
[0x8a,0x45,0x45,0xcf], [0xe9,0xf9,0xf9,0x10], [0x04,0x02,0x02,0x06], [0xfe,0x7f,0x7f,0x81], |
149
|
|
|
|
|
|
|
[0xa0,0x50,0x50,0xf0], [0x78,0x3c,0x3c,0x44], [0x25,0x9f,0x9f,0xba], [0x4b,0xa8,0xa8,0xe3], |
150
|
|
|
|
|
|
|
[0xa2,0x51,0x51,0xf3], [0x5d,0xa3,0xa3,0xfe], [0x80,0x40,0x40,0xc0], [0x05,0x8f,0x8f,0x8a], |
151
|
|
|
|
|
|
|
[0x3f,0x92,0x92,0xad], [0x21,0x9d,0x9d,0xbc], [0x70,0x38,0x38,0x48], [0xf1,0xf5,0xf5,0x04], |
152
|
|
|
|
|
|
|
[0x63,0xbc,0xbc,0xdf], [0x77,0xb6,0xb6,0xc1], [0xaf,0xda,0xda,0x75], [0x42,0x21,0x21,0x63], |
153
|
|
|
|
|
|
|
[0x20,0x10,0x10,0x30], [0xe5,0xff,0xff,0x1a], [0xfd,0xf3,0xf3,0x0e], [0xbf,0xd2,0xd2,0x6d], |
154
|
|
|
|
|
|
|
[0x81,0xcd,0xcd,0x4c], [0x18,0x0c,0x0c,0x14], [0x26,0x13,0x13,0x35], [0xc3,0xec,0xec,0x2f], |
155
|
|
|
|
|
|
|
[0xbe,0x5f,0x5f,0xe1], [0x35,0x97,0x97,0xa2], [0x88,0x44,0x44,0xcc], [0x2e,0x17,0x17,0x39], |
156
|
|
|
|
|
|
|
[0x93,0xc4,0xc4,0x57], [0x55,0xa7,0xa7,0xf2], [0xfc,0x7e,0x7e,0x82], [0x7a,0x3d,0x3d,0x47], |
157
|
|
|
|
|
|
|
[0xc8,0x64,0x64,0xac], [0xba,0x5d,0x5d,0xe7], [0x32,0x19,0x19,0x2b], [0xe6,0x73,0x73,0x95], |
158
|
|
|
|
|
|
|
[0xc0,0x60,0x60,0xa0], [0x19,0x81,0x81,0x98], [0x9e,0x4f,0x4f,0xd1], [0xa3,0xdc,0xdc,0x7f], |
159
|
|
|
|
|
|
|
[0x44,0x22,0x22,0x66], [0x54,0x2a,0x2a,0x7e], [0x3b,0x90,0x90,0xab], [0x0b,0x88,0x88,0x83], |
160
|
|
|
|
|
|
|
[0x8c,0x46,0x46,0xca], [0xc7,0xee,0xee,0x29], [0x6b,0xb8,0xb8,0xd3], [0x28,0x14,0x14,0x3c], |
161
|
|
|
|
|
|
|
[0xa7,0xde,0xde,0x79], [0xbc,0x5e,0x5e,0xe2], [0x16,0x0b,0x0b,0x1d], [0xad,0xdb,0xdb,0x76], |
162
|
|
|
|
|
|
|
[0xdb,0xe0,0xe0,0x3b], [0x64,0x32,0x32,0x56], [0x74,0x3a,0x3a,0x4e], [0x14,0x0a,0x0a,0x1e], |
163
|
|
|
|
|
|
|
[0x92,0x49,0x49,0xdb], [0x0c,0x06,0x06,0x0a], [0x48,0x24,0x24,0x6c], [0xb8,0x5c,0x5c,0xe4], |
164
|
|
|
|
|
|
|
[0x9f,0xc2,0xc2,0x5d], [0xbd,0xd3,0xd3,0x6e], [0x43,0xac,0xac,0xef], [0xc4,0x62,0x62,0xa6], |
165
|
|
|
|
|
|
|
[0x39,0x91,0x91,0xa8], [0x31,0x95,0x95,0xa4], [0xd3,0xe4,0xe4,0x37], [0xf2,0x79,0x79,0x8b], |
166
|
|
|
|
|
|
|
[0xd5,0xe7,0xe7,0x32], [0x8b,0xc8,0xc8,0x43], [0x6e,0x37,0x37,0x59], [0xda,0x6d,0x6d,0xb7], |
167
|
|
|
|
|
|
|
[0x01,0x8d,0x8d,0x8c], [0xb1,0xd5,0xd5,0x64], [0x9c,0x4e,0x4e,0xd2], [0x49,0xa9,0xa9,0xe0], |
168
|
|
|
|
|
|
|
[0xd8,0x6c,0x6c,0xb4], [0xac,0x56,0x56,0xfa], [0xf3,0xf4,0xf4,0x07], [0xcf,0xea,0xea,0x25], |
169
|
|
|
|
|
|
|
[0xca,0x65,0x65,0xaf], [0xf4,0x7a,0x7a,0x8e], [0x47,0xae,0xae,0xe9], [0x10,0x08,0x08,0x18], |
170
|
|
|
|
|
|
|
[0x6f,0xba,0xba,0xd5], [0xf0,0x78,0x78,0x88], [0x4a,0x25,0x25,0x6f], [0x5c,0x2e,0x2e,0x72], |
171
|
|
|
|
|
|
|
[0x38,0x1c,0x1c,0x24], [0x57,0xa6,0xa6,0xf1], [0x73,0xb4,0xb4,0xc7], [0x97,0xc6,0xc6,0x51], |
172
|
|
|
|
|
|
|
[0xcb,0xe8,0xe8,0x23], [0xa1,0xdd,0xdd,0x7c], [0xe8,0x74,0x74,0x9c], [0x3e,0x1f,0x1f,0x21], |
173
|
|
|
|
|
|
|
[0x96,0x4b,0x4b,0xdd], [0x61,0xbd,0xbd,0xdc], [0x0d,0x8b,0x8b,0x86], [0x0f,0x8a,0x8a,0x85], |
174
|
|
|
|
|
|
|
[0xe0,0x70,0x70,0x90], [0x7c,0x3e,0x3e,0x42], [0x71,0xb5,0xb5,0xc4], [0xcc,0x66,0x66,0xaa], |
175
|
|
|
|
|
|
|
[0x90,0x48,0x48,0xd8], [0x06,0x03,0x03,0x05], [0xf7,0xf6,0xf6,0x01], [0x1c,0x0e,0x0e,0x12], |
176
|
|
|
|
|
|
|
[0xc2,0x61,0x61,0xa3], [0x6a,0x35,0x35,0x5f], [0xae,0x57,0x57,0xf9], [0x69,0xb9,0xb9,0xd0], |
177
|
|
|
|
|
|
|
[0x17,0x86,0x86,0x91], [0x99,0xc1,0xc1,0x58], [0x3a,0x1d,0x1d,0x27], [0x27,0x9e,0x9e,0xb9], |
178
|
|
|
|
|
|
|
[0xd9,0xe1,0xe1,0x38], [0xeb,0xf8,0xf8,0x13], [0x2b,0x98,0x98,0xb3], [0x22,0x11,0x11,0x33], |
179
|
|
|
|
|
|
|
[0xd2,0x69,0x69,0xbb], [0xa9,0xd9,0xd9,0x70], [0x07,0x8e,0x8e,0x89], [0x33,0x94,0x94,0xa7], |
180
|
|
|
|
|
|
|
[0x2d,0x9b,0x9b,0xb6], [0x3c,0x1e,0x1e,0x22], [0x15,0x87,0x87,0x92], [0xc9,0xe9,0xe9,0x20], |
181
|
|
|
|
|
|
|
[0x87,0xce,0xce,0x49], [0xaa,0x55,0x55,0xff], [0x50,0x28,0x28,0x78], [0xa5,0xdf,0xdf,0x7a], |
182
|
|
|
|
|
|
|
[0x03,0x8c,0x8c,0x8f], [0x59,0xa1,0xa1,0xf8], [0x09,0x89,0x89,0x80], [0x1a,0x0d,0x0d,0x17], |
183
|
|
|
|
|
|
|
[0x65,0xbf,0xbf,0xda], [0xd7,0xe6,0xe6,0x31], [0x84,0x42,0x42,0xc6], [0xd0,0x68,0x68,0xb8], |
184
|
|
|
|
|
|
|
[0x82,0x41,0x41,0xc3], [0x29,0x99,0x99,0xb0], [0x5a,0x2d,0x2d,0x77], [0x1e,0x0f,0x0f,0x11], |
185
|
|
|
|
|
|
|
[0x7b,0xb0,0xb0,0xcb], [0xa8,0x54,0x54,0xfc], [0x6d,0xbb,0xbb,0xd6], [0x2c,0x16,0x16,0x3a] |
186
|
|
|
|
|
|
|
); |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
my @T2 = ( |
189
|
|
|
|
|
|
|
[0xa5,0xc6,0x63,0x63], [0x84,0xf8,0x7c,0x7c], [0x99,0xee,0x77,0x77], [0x8d,0xf6,0x7b,0x7b], |
190
|
|
|
|
|
|
|
[0x0d,0xff,0xf2,0xf2], [0xbd,0xd6,0x6b,0x6b], [0xb1,0xde,0x6f,0x6f], [0x54,0x91,0xc5,0xc5], |
191
|
|
|
|
|
|
|
[0x50,0x60,0x30,0x30], [0x03,0x02,0x01,0x01], [0xa9,0xce,0x67,0x67], [0x7d,0x56,0x2b,0x2b], |
192
|
|
|
|
|
|
|
[0x19,0xe7,0xfe,0xfe], [0x62,0xb5,0xd7,0xd7], [0xe6,0x4d,0xab,0xab], [0x9a,0xec,0x76,0x76], |
193
|
|
|
|
|
|
|
[0x45,0x8f,0xca,0xca], [0x9d,0x1f,0x82,0x82], [0x40,0x89,0xc9,0xc9], [0x87,0xfa,0x7d,0x7d], |
194
|
|
|
|
|
|
|
[0x15,0xef,0xfa,0xfa], [0xeb,0xb2,0x59,0x59], [0xc9,0x8e,0x47,0x47], [0x0b,0xfb,0xf0,0xf0], |
195
|
|
|
|
|
|
|
[0xec,0x41,0xad,0xad], [0x67,0xb3,0xd4,0xd4], [0xfd,0x5f,0xa2,0xa2], [0xea,0x45,0xaf,0xaf], |
196
|
|
|
|
|
|
|
[0xbf,0x23,0x9c,0x9c], [0xf7,0x53,0xa4,0xa4], [0x96,0xe4,0x72,0x72], [0x5b,0x9b,0xc0,0xc0], |
197
|
|
|
|
|
|
|
[0xc2,0x75,0xb7,0xb7], [0x1c,0xe1,0xfd,0xfd], [0xae,0x3d,0x93,0x93], [0x6a,0x4c,0x26,0x26], |
198
|
|
|
|
|
|
|
[0x5a,0x6c,0x36,0x36], [0x41,0x7e,0x3f,0x3f], [0x02,0xf5,0xf7,0xf7], [0x4f,0x83,0xcc,0xcc], |
199
|
|
|
|
|
|
|
[0x5c,0x68,0x34,0x34], [0xf4,0x51,0xa5,0xa5], [0x34,0xd1,0xe5,0xe5], [0x08,0xf9,0xf1,0xf1], |
200
|
|
|
|
|
|
|
[0x93,0xe2,0x71,0x71], [0x73,0xab,0xd8,0xd8], [0x53,0x62,0x31,0x31], [0x3f,0x2a,0x15,0x15], |
201
|
|
|
|
|
|
|
[0x0c,0x08,0x04,0x04], [0x52,0x95,0xc7,0xc7], [0x65,0x46,0x23,0x23], [0x5e,0x9d,0xc3,0xc3], |
202
|
|
|
|
|
|
|
[0x28,0x30,0x18,0x18], [0xa1,0x37,0x96,0x96], [0x0f,0x0a,0x05,0x05], [0xb5,0x2f,0x9a,0x9a], |
203
|
|
|
|
|
|
|
[0x09,0x0e,0x07,0x07], [0x36,0x24,0x12,0x12], [0x9b,0x1b,0x80,0x80], [0x3d,0xdf,0xe2,0xe2], |
204
|
|
|
|
|
|
|
[0x26,0xcd,0xeb,0xeb], [0x69,0x4e,0x27,0x27], [0xcd,0x7f,0xb2,0xb2], [0x9f,0xea,0x75,0x75], |
205
|
|
|
|
|
|
|
[0x1b,0x12,0x09,0x09], [0x9e,0x1d,0x83,0x83], [0x74,0x58,0x2c,0x2c], [0x2e,0x34,0x1a,0x1a], |
206
|
|
|
|
|
|
|
[0x2d,0x36,0x1b,0x1b], [0xb2,0xdc,0x6e,0x6e], [0xee,0xb4,0x5a,0x5a], [0xfb,0x5b,0xa0,0xa0], |
207
|
|
|
|
|
|
|
[0xf6,0xa4,0x52,0x52], [0x4d,0x76,0x3b,0x3b], [0x61,0xb7,0xd6,0xd6], [0xce,0x7d,0xb3,0xb3], |
208
|
|
|
|
|
|
|
[0x7b,0x52,0x29,0x29], [0x3e,0xdd,0xe3,0xe3], [0x71,0x5e,0x2f,0x2f], [0x97,0x13,0x84,0x84], |
209
|
|
|
|
|
|
|
[0xf5,0xa6,0x53,0x53], [0x68,0xb9,0xd1,0xd1], [0x00,0x00,0x00,0x00], [0x2c,0xc1,0xed,0xed], |
210
|
|
|
|
|
|
|
[0x60,0x40,0x20,0x20], [0x1f,0xe3,0xfc,0xfc], [0xc8,0x79,0xb1,0xb1], [0xed,0xb6,0x5b,0x5b], |
211
|
|
|
|
|
|
|
[0xbe,0xd4,0x6a,0x6a], [0x46,0x8d,0xcb,0xcb], [0xd9,0x67,0xbe,0xbe], [0x4b,0x72,0x39,0x39], |
212
|
|
|
|
|
|
|
[0xde,0x94,0x4a,0x4a], [0xd4,0x98,0x4c,0x4c], [0xe8,0xb0,0x58,0x58], [0x4a,0x85,0xcf,0xcf], |
213
|
|
|
|
|
|
|
[0x6b,0xbb,0xd0,0xd0], [0x2a,0xc5,0xef,0xef], [0xe5,0x4f,0xaa,0xaa], [0x16,0xed,0xfb,0xfb], |
214
|
|
|
|
|
|
|
[0xc5,0x86,0x43,0x43], [0xd7,0x9a,0x4d,0x4d], [0x55,0x66,0x33,0x33], [0x94,0x11,0x85,0x85], |
215
|
|
|
|
|
|
|
[0xcf,0x8a,0x45,0x45], [0x10,0xe9,0xf9,0xf9], [0x06,0x04,0x02,0x02], [0x81,0xfe,0x7f,0x7f], |
216
|
|
|
|
|
|
|
[0xf0,0xa0,0x50,0x50], [0x44,0x78,0x3c,0x3c], [0xba,0x25,0x9f,0x9f], [0xe3,0x4b,0xa8,0xa8], |
217
|
|
|
|
|
|
|
[0xf3,0xa2,0x51,0x51], [0xfe,0x5d,0xa3,0xa3], [0xc0,0x80,0x40,0x40], [0x8a,0x05,0x8f,0x8f], |
218
|
|
|
|
|
|
|
[0xad,0x3f,0x92,0x92], [0xbc,0x21,0x9d,0x9d], [0x48,0x70,0x38,0x38], [0x04,0xf1,0xf5,0xf5], |
219
|
|
|
|
|
|
|
[0xdf,0x63,0xbc,0xbc], [0xc1,0x77,0xb6,0xb6], [0x75,0xaf,0xda,0xda], [0x63,0x42,0x21,0x21], |
220
|
|
|
|
|
|
|
[0x30,0x20,0x10,0x10], [0x1a,0xe5,0xff,0xff], [0x0e,0xfd,0xf3,0xf3], [0x6d,0xbf,0xd2,0xd2], |
221
|
|
|
|
|
|
|
[0x4c,0x81,0xcd,0xcd], [0x14,0x18,0x0c,0x0c], [0x35,0x26,0x13,0x13], [0x2f,0xc3,0xec,0xec], |
222
|
|
|
|
|
|
|
[0xe1,0xbe,0x5f,0x5f], [0xa2,0x35,0x97,0x97], [0xcc,0x88,0x44,0x44], [0x39,0x2e,0x17,0x17], |
223
|
|
|
|
|
|
|
[0x57,0x93,0xc4,0xc4], [0xf2,0x55,0xa7,0xa7], [0x82,0xfc,0x7e,0x7e], [0x47,0x7a,0x3d,0x3d], |
224
|
|
|
|
|
|
|
[0xac,0xc8,0x64,0x64], [0xe7,0xba,0x5d,0x5d], [0x2b,0x32,0x19,0x19], [0x95,0xe6,0x73,0x73], |
225
|
|
|
|
|
|
|
[0xa0,0xc0,0x60,0x60], [0x98,0x19,0x81,0x81], [0xd1,0x9e,0x4f,0x4f], [0x7f,0xa3,0xdc,0xdc], |
226
|
|
|
|
|
|
|
[0x66,0x44,0x22,0x22], [0x7e,0x54,0x2a,0x2a], [0xab,0x3b,0x90,0x90], [0x83,0x0b,0x88,0x88], |
227
|
|
|
|
|
|
|
[0xca,0x8c,0x46,0x46], [0x29,0xc7,0xee,0xee], [0xd3,0x6b,0xb8,0xb8], [0x3c,0x28,0x14,0x14], |
228
|
|
|
|
|
|
|
[0x79,0xa7,0xde,0xde], [0xe2,0xbc,0x5e,0x5e], [0x1d,0x16,0x0b,0x0b], [0x76,0xad,0xdb,0xdb], |
229
|
|
|
|
|
|
|
[0x3b,0xdb,0xe0,0xe0], [0x56,0x64,0x32,0x32], [0x4e,0x74,0x3a,0x3a], [0x1e,0x14,0x0a,0x0a], |
230
|
|
|
|
|
|
|
[0xdb,0x92,0x49,0x49], [0x0a,0x0c,0x06,0x06], [0x6c,0x48,0x24,0x24], [0xe4,0xb8,0x5c,0x5c], |
231
|
|
|
|
|
|
|
[0x5d,0x9f,0xc2,0xc2], [0x6e,0xbd,0xd3,0xd3], [0xef,0x43,0xac,0xac], [0xa6,0xc4,0x62,0x62], |
232
|
|
|
|
|
|
|
[0xa8,0x39,0x91,0x91], [0xa4,0x31,0x95,0x95], [0x37,0xd3,0xe4,0xe4], [0x8b,0xf2,0x79,0x79], |
233
|
|
|
|
|
|
|
[0x32,0xd5,0xe7,0xe7], [0x43,0x8b,0xc8,0xc8], [0x59,0x6e,0x37,0x37], [0xb7,0xda,0x6d,0x6d], |
234
|
|
|
|
|
|
|
[0x8c,0x01,0x8d,0x8d], [0x64,0xb1,0xd5,0xd5], [0xd2,0x9c,0x4e,0x4e], [0xe0,0x49,0xa9,0xa9], |
235
|
|
|
|
|
|
|
[0xb4,0xd8,0x6c,0x6c], [0xfa,0xac,0x56,0x56], [0x07,0xf3,0xf4,0xf4], [0x25,0xcf,0xea,0xea], |
236
|
|
|
|
|
|
|
[0xaf,0xca,0x65,0x65], [0x8e,0xf4,0x7a,0x7a], [0xe9,0x47,0xae,0xae], [0x18,0x10,0x08,0x08], |
237
|
|
|
|
|
|
|
[0xd5,0x6f,0xba,0xba], [0x88,0xf0,0x78,0x78], [0x6f,0x4a,0x25,0x25], [0x72,0x5c,0x2e,0x2e], |
238
|
|
|
|
|
|
|
[0x24,0x38,0x1c,0x1c], [0xf1,0x57,0xa6,0xa6], [0xc7,0x73,0xb4,0xb4], [0x51,0x97,0xc6,0xc6], |
239
|
|
|
|
|
|
|
[0x23,0xcb,0xe8,0xe8], [0x7c,0xa1,0xdd,0xdd], [0x9c,0xe8,0x74,0x74], [0x21,0x3e,0x1f,0x1f], |
240
|
|
|
|
|
|
|
[0xdd,0x96,0x4b,0x4b], [0xdc,0x61,0xbd,0xbd], [0x86,0x0d,0x8b,0x8b], [0x85,0x0f,0x8a,0x8a], |
241
|
|
|
|
|
|
|
[0x90,0xe0,0x70,0x70], [0x42,0x7c,0x3e,0x3e], [0xc4,0x71,0xb5,0xb5], [0xaa,0xcc,0x66,0x66], |
242
|
|
|
|
|
|
|
[0xd8,0x90,0x48,0x48], [0x05,0x06,0x03,0x03], [0x01,0xf7,0xf6,0xf6], [0x12,0x1c,0x0e,0x0e], |
243
|
|
|
|
|
|
|
[0xa3,0xc2,0x61,0x61], [0x5f,0x6a,0x35,0x35], [0xf9,0xae,0x57,0x57], [0xd0,0x69,0xb9,0xb9], |
244
|
|
|
|
|
|
|
[0x91,0x17,0x86,0x86], [0x58,0x99,0xc1,0xc1], [0x27,0x3a,0x1d,0x1d], [0xb9,0x27,0x9e,0x9e], |
245
|
|
|
|
|
|
|
[0x38,0xd9,0xe1,0xe1], [0x13,0xeb,0xf8,0xf8], [0xb3,0x2b,0x98,0x98], [0x33,0x22,0x11,0x11], |
246
|
|
|
|
|
|
|
[0xbb,0xd2,0x69,0x69], [0x70,0xa9,0xd9,0xd9], [0x89,0x07,0x8e,0x8e], [0xa7,0x33,0x94,0x94], |
247
|
|
|
|
|
|
|
[0xb6,0x2d,0x9b,0x9b], [0x22,0x3c,0x1e,0x1e], [0x92,0x15,0x87,0x87], [0x20,0xc9,0xe9,0xe9], |
248
|
|
|
|
|
|
|
[0x49,0x87,0xce,0xce], [0xff,0xaa,0x55,0x55], [0x78,0x50,0x28,0x28], [0x7a,0xa5,0xdf,0xdf], |
249
|
|
|
|
|
|
|
[0x8f,0x03,0x8c,0x8c], [0xf8,0x59,0xa1,0xa1], [0x80,0x09,0x89,0x89], [0x17,0x1a,0x0d,0x0d], |
250
|
|
|
|
|
|
|
[0xda,0x65,0xbf,0xbf], [0x31,0xd7,0xe6,0xe6], [0xc6,0x84,0x42,0x42], [0xb8,0xd0,0x68,0x68], |
251
|
|
|
|
|
|
|
[0xc3,0x82,0x41,0x41], [0xb0,0x29,0x99,0x99], [0x77,0x5a,0x2d,0x2d], [0x11,0x1e,0x0f,0x0f], |
252
|
|
|
|
|
|
|
[0xcb,0x7b,0xb0,0xb0], [0xfc,0xa8,0x54,0x54], [0xd6,0x6d,0xbb,0xbb], [0x3a,0x2c,0x16,0x16] |
253
|
|
|
|
|
|
|
); |
254
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
my @T3 = ( |
256
|
|
|
|
|
|
|
[0x63,0xa5,0xc6,0x63], [0x7c,0x84,0xf8,0x7c], [0x77,0x99,0xee,0x77], [0x7b,0x8d,0xf6,0x7b], |
257
|
|
|
|
|
|
|
[0xf2,0x0d,0xff,0xf2], [0x6b,0xbd,0xd6,0x6b], [0x6f,0xb1,0xde,0x6f], [0xc5,0x54,0x91,0xc5], |
258
|
|
|
|
|
|
|
[0x30,0x50,0x60,0x30], [0x01,0x03,0x02,0x01], [0x67,0xa9,0xce,0x67], [0x2b,0x7d,0x56,0x2b], |
259
|
|
|
|
|
|
|
[0xfe,0x19,0xe7,0xfe], [0xd7,0x62,0xb5,0xd7], [0xab,0xe6,0x4d,0xab], [0x76,0x9a,0xec,0x76], |
260
|
|
|
|
|
|
|
[0xca,0x45,0x8f,0xca], [0x82,0x9d,0x1f,0x82], [0xc9,0x40,0x89,0xc9], [0x7d,0x87,0xfa,0x7d], |
261
|
|
|
|
|
|
|
[0xfa,0x15,0xef,0xfa], [0x59,0xeb,0xb2,0x59], [0x47,0xc9,0x8e,0x47], [0xf0,0x0b,0xfb,0xf0], |
262
|
|
|
|
|
|
|
[0xad,0xec,0x41,0xad], [0xd4,0x67,0xb3,0xd4], [0xa2,0xfd,0x5f,0xa2], [0xaf,0xea,0x45,0xaf], |
263
|
|
|
|
|
|
|
[0x9c,0xbf,0x23,0x9c], [0xa4,0xf7,0x53,0xa4], [0x72,0x96,0xe4,0x72], [0xc0,0x5b,0x9b,0xc0], |
264
|
|
|
|
|
|
|
[0xb7,0xc2,0x75,0xb7], [0xfd,0x1c,0xe1,0xfd], [0x93,0xae,0x3d,0x93], [0x26,0x6a,0x4c,0x26], |
265
|
|
|
|
|
|
|
[0x36,0x5a,0x6c,0x36], [0x3f,0x41,0x7e,0x3f], [0xf7,0x02,0xf5,0xf7], [0xcc,0x4f,0x83,0xcc], |
266
|
|
|
|
|
|
|
[0x34,0x5c,0x68,0x34], [0xa5,0xf4,0x51,0xa5], [0xe5,0x34,0xd1,0xe5], [0xf1,0x08,0xf9,0xf1], |
267
|
|
|
|
|
|
|
[0x71,0x93,0xe2,0x71], [0xd8,0x73,0xab,0xd8], [0x31,0x53,0x62,0x31], [0x15,0x3f,0x2a,0x15], |
268
|
|
|
|
|
|
|
[0x04,0x0c,0x08,0x04], [0xc7,0x52,0x95,0xc7], [0x23,0x65,0x46,0x23], [0xc3,0x5e,0x9d,0xc3], |
269
|
|
|
|
|
|
|
[0x18,0x28,0x30,0x18], [0x96,0xa1,0x37,0x96], [0x05,0x0f,0x0a,0x05], [0x9a,0xb5,0x2f,0x9a], |
270
|
|
|
|
|
|
|
[0x07,0x09,0x0e,0x07], [0x12,0x36,0x24,0x12], [0x80,0x9b,0x1b,0x80], [0xe2,0x3d,0xdf,0xe2], |
271
|
|
|
|
|
|
|
[0xeb,0x26,0xcd,0xeb], [0x27,0x69,0x4e,0x27], [0xb2,0xcd,0x7f,0xb2], [0x75,0x9f,0xea,0x75], |
272
|
|
|
|
|
|
|
[0x09,0x1b,0x12,0x09], [0x83,0x9e,0x1d,0x83], [0x2c,0x74,0x58,0x2c], [0x1a,0x2e,0x34,0x1a], |
273
|
|
|
|
|
|
|
[0x1b,0x2d,0x36,0x1b], [0x6e,0xb2,0xdc,0x6e], [0x5a,0xee,0xb4,0x5a], [0xa0,0xfb,0x5b,0xa0], |
274
|
|
|
|
|
|
|
[0x52,0xf6,0xa4,0x52], [0x3b,0x4d,0x76,0x3b], [0xd6,0x61,0xb7,0xd6], [0xb3,0xce,0x7d,0xb3], |
275
|
|
|
|
|
|
|
[0x29,0x7b,0x52,0x29], [0xe3,0x3e,0xdd,0xe3], [0x2f,0x71,0x5e,0x2f], [0x84,0x97,0x13,0x84], |
276
|
|
|
|
|
|
|
[0x53,0xf5,0xa6,0x53], [0xd1,0x68,0xb9,0xd1], [0x00,0x00,0x00,0x00], [0xed,0x2c,0xc1,0xed], |
277
|
|
|
|
|
|
|
[0x20,0x60,0x40,0x20], [0xfc,0x1f,0xe3,0xfc], [0xb1,0xc8,0x79,0xb1], [0x5b,0xed,0xb6,0x5b], |
278
|
|
|
|
|
|
|
[0x6a,0xbe,0xd4,0x6a], [0xcb,0x46,0x8d,0xcb], [0xbe,0xd9,0x67,0xbe], [0x39,0x4b,0x72,0x39], |
279
|
|
|
|
|
|
|
[0x4a,0xde,0x94,0x4a], [0x4c,0xd4,0x98,0x4c], [0x58,0xe8,0xb0,0x58], [0xcf,0x4a,0x85,0xcf], |
280
|
|
|
|
|
|
|
[0xd0,0x6b,0xbb,0xd0], [0xef,0x2a,0xc5,0xef], [0xaa,0xe5,0x4f,0xaa], [0xfb,0x16,0xed,0xfb], |
281
|
|
|
|
|
|
|
[0x43,0xc5,0x86,0x43], [0x4d,0xd7,0x9a,0x4d], [0x33,0x55,0x66,0x33], [0x85,0x94,0x11,0x85], |
282
|
|
|
|
|
|
|
[0x45,0xcf,0x8a,0x45], [0xf9,0x10,0xe9,0xf9], [0x02,0x06,0x04,0x02], [0x7f,0x81,0xfe,0x7f], |
283
|
|
|
|
|
|
|
[0x50,0xf0,0xa0,0x50], [0x3c,0x44,0x78,0x3c], [0x9f,0xba,0x25,0x9f], [0xa8,0xe3,0x4b,0xa8], |
284
|
|
|
|
|
|
|
[0x51,0xf3,0xa2,0x51], [0xa3,0xfe,0x5d,0xa3], [0x40,0xc0,0x80,0x40], [0x8f,0x8a,0x05,0x8f], |
285
|
|
|
|
|
|
|
[0x92,0xad,0x3f,0x92], [0x9d,0xbc,0x21,0x9d], [0x38,0x48,0x70,0x38], [0xf5,0x04,0xf1,0xf5], |
286
|
|
|
|
|
|
|
[0xbc,0xdf,0x63,0xbc], [0xb6,0xc1,0x77,0xb6], [0xda,0x75,0xaf,0xda], [0x21,0x63,0x42,0x21], |
287
|
|
|
|
|
|
|
[0x10,0x30,0x20,0x10], [0xff,0x1a,0xe5,0xff], [0xf3,0x0e,0xfd,0xf3], [0xd2,0x6d,0xbf,0xd2], |
288
|
|
|
|
|
|
|
[0xcd,0x4c,0x81,0xcd], [0x0c,0x14,0x18,0x0c], [0x13,0x35,0x26,0x13], [0xec,0x2f,0xc3,0xec], |
289
|
|
|
|
|
|
|
[0x5f,0xe1,0xbe,0x5f], [0x97,0xa2,0x35,0x97], [0x44,0xcc,0x88,0x44], [0x17,0x39,0x2e,0x17], |
290
|
|
|
|
|
|
|
[0xc4,0x57,0x93,0xc4], [0xa7,0xf2,0x55,0xa7], [0x7e,0x82,0xfc,0x7e], [0x3d,0x47,0x7a,0x3d], |
291
|
|
|
|
|
|
|
[0x64,0xac,0xc8,0x64], [0x5d,0xe7,0xba,0x5d], [0x19,0x2b,0x32,0x19], [0x73,0x95,0xe6,0x73], |
292
|
|
|
|
|
|
|
[0x60,0xa0,0xc0,0x60], [0x81,0x98,0x19,0x81], [0x4f,0xd1,0x9e,0x4f], [0xdc,0x7f,0xa3,0xdc], |
293
|
|
|
|
|
|
|
[0x22,0x66,0x44,0x22], [0x2a,0x7e,0x54,0x2a], [0x90,0xab,0x3b,0x90], [0x88,0x83,0x0b,0x88], |
294
|
|
|
|
|
|
|
[0x46,0xca,0x8c,0x46], [0xee,0x29,0xc7,0xee], [0xb8,0xd3,0x6b,0xb8], [0x14,0x3c,0x28,0x14], |
295
|
|
|
|
|
|
|
[0xde,0x79,0xa7,0xde], [0x5e,0xe2,0xbc,0x5e], [0x0b,0x1d,0x16,0x0b], [0xdb,0x76,0xad,0xdb], |
296
|
|
|
|
|
|
|
[0xe0,0x3b,0xdb,0xe0], [0x32,0x56,0x64,0x32], [0x3a,0x4e,0x74,0x3a], [0x0a,0x1e,0x14,0x0a], |
297
|
|
|
|
|
|
|
[0x49,0xdb,0x92,0x49], [0x06,0x0a,0x0c,0x06], [0x24,0x6c,0x48,0x24], [0x5c,0xe4,0xb8,0x5c], |
298
|
|
|
|
|
|
|
[0xc2,0x5d,0x9f,0xc2], [0xd3,0x6e,0xbd,0xd3], [0xac,0xef,0x43,0xac], [0x62,0xa6,0xc4,0x62], |
299
|
|
|
|
|
|
|
[0x91,0xa8,0x39,0x91], [0x95,0xa4,0x31,0x95], [0xe4,0x37,0xd3,0xe4], [0x79,0x8b,0xf2,0x79], |
300
|
|
|
|
|
|
|
[0xe7,0x32,0xd5,0xe7], [0xc8,0x43,0x8b,0xc8], [0x37,0x59,0x6e,0x37], [0x6d,0xb7,0xda,0x6d], |
301
|
|
|
|
|
|
|
[0x8d,0x8c,0x01,0x8d], [0xd5,0x64,0xb1,0xd5], [0x4e,0xd2,0x9c,0x4e], [0xa9,0xe0,0x49,0xa9], |
302
|
|
|
|
|
|
|
[0x6c,0xb4,0xd8,0x6c], [0x56,0xfa,0xac,0x56], [0xf4,0x07,0xf3,0xf4], [0xea,0x25,0xcf,0xea], |
303
|
|
|
|
|
|
|
[0x65,0xaf,0xca,0x65], [0x7a,0x8e,0xf4,0x7a], [0xae,0xe9,0x47,0xae], [0x08,0x18,0x10,0x08], |
304
|
|
|
|
|
|
|
[0xba,0xd5,0x6f,0xba], [0x78,0x88,0xf0,0x78], [0x25,0x6f,0x4a,0x25], [0x2e,0x72,0x5c,0x2e], |
305
|
|
|
|
|
|
|
[0x1c,0x24,0x38,0x1c], [0xa6,0xf1,0x57,0xa6], [0xb4,0xc7,0x73,0xb4], [0xc6,0x51,0x97,0xc6], |
306
|
|
|
|
|
|
|
[0xe8,0x23,0xcb,0xe8], [0xdd,0x7c,0xa1,0xdd], [0x74,0x9c,0xe8,0x74], [0x1f,0x21,0x3e,0x1f], |
307
|
|
|
|
|
|
|
[0x4b,0xdd,0x96,0x4b], [0xbd,0xdc,0x61,0xbd], [0x8b,0x86,0x0d,0x8b], [0x8a,0x85,0x0f,0x8a], |
308
|
|
|
|
|
|
|
[0x70,0x90,0xe0,0x70], [0x3e,0x42,0x7c,0x3e], [0xb5,0xc4,0x71,0xb5], [0x66,0xaa,0xcc,0x66], |
309
|
|
|
|
|
|
|
[0x48,0xd8,0x90,0x48], [0x03,0x05,0x06,0x03], [0xf6,0x01,0xf7,0xf6], [0x0e,0x12,0x1c,0x0e], |
310
|
|
|
|
|
|
|
[0x61,0xa3,0xc2,0x61], [0x35,0x5f,0x6a,0x35], [0x57,0xf9,0xae,0x57], [0xb9,0xd0,0x69,0xb9], |
311
|
|
|
|
|
|
|
[0x86,0x91,0x17,0x86], [0xc1,0x58,0x99,0xc1], [0x1d,0x27,0x3a,0x1d], [0x9e,0xb9,0x27,0x9e], |
312
|
|
|
|
|
|
|
[0xe1,0x38,0xd9,0xe1], [0xf8,0x13,0xeb,0xf8], [0x98,0xb3,0x2b,0x98], [0x11,0x33,0x22,0x11], |
313
|
|
|
|
|
|
|
[0x69,0xbb,0xd2,0x69], [0xd9,0x70,0xa9,0xd9], [0x8e,0x89,0x07,0x8e], [0x94,0xa7,0x33,0x94], |
314
|
|
|
|
|
|
|
[0x9b,0xb6,0x2d,0x9b], [0x1e,0x22,0x3c,0x1e], [0x87,0x92,0x15,0x87], [0xe9,0x20,0xc9,0xe9], |
315
|
|
|
|
|
|
|
[0xce,0x49,0x87,0xce], [0x55,0xff,0xaa,0x55], [0x28,0x78,0x50,0x28], [0xdf,0x7a,0xa5,0xdf], |
316
|
|
|
|
|
|
|
[0x8c,0x8f,0x03,0x8c], [0xa1,0xf8,0x59,0xa1], [0x89,0x80,0x09,0x89], [0x0d,0x17,0x1a,0x0d], |
317
|
|
|
|
|
|
|
[0xbf,0xda,0x65,0xbf], [0xe6,0x31,0xd7,0xe6], [0x42,0xc6,0x84,0x42], [0x68,0xb8,0xd0,0x68], |
318
|
|
|
|
|
|
|
[0x41,0xc3,0x82,0x41], [0x99,0xb0,0x29,0x99], [0x2d,0x77,0x5a,0x2d], [0x0f,0x11,0x1e,0x0f], |
319
|
|
|
|
|
|
|
[0xb0,0xcb,0x7b,0xb0], [0x54,0xfc,0xa8,0x54], [0xbb,0xd6,0x6d,0xbb], [0x16,0x3a,0x2c,0x16] |
320
|
|
|
|
|
|
|
); |
321
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
my @T4 = ( |
323
|
|
|
|
|
|
|
[0x63,0x63,0xa5,0xc6], [0x7c,0x7c,0x84,0xf8], [0x77,0x77,0x99,0xee], [0x7b,0x7b,0x8d,0xf6], |
324
|
|
|
|
|
|
|
[0xf2,0xf2,0x0d,0xff], [0x6b,0x6b,0xbd,0xd6], [0x6f,0x6f,0xb1,0xde], [0xc5,0xc5,0x54,0x91], |
325
|
|
|
|
|
|
|
[0x30,0x30,0x50,0x60], [0x01,0x01,0x03,0x02], [0x67,0x67,0xa9,0xce], [0x2b,0x2b,0x7d,0x56], |
326
|
|
|
|
|
|
|
[0xfe,0xfe,0x19,0xe7], [0xd7,0xd7,0x62,0xb5], [0xab,0xab,0xe6,0x4d], [0x76,0x76,0x9a,0xec], |
327
|
|
|
|
|
|
|
[0xca,0xca,0x45,0x8f], [0x82,0x82,0x9d,0x1f], [0xc9,0xc9,0x40,0x89], [0x7d,0x7d,0x87,0xfa], |
328
|
|
|
|
|
|
|
[0xfa,0xfa,0x15,0xef], [0x59,0x59,0xeb,0xb2], [0x47,0x47,0xc9,0x8e], [0xf0,0xf0,0x0b,0xfb], |
329
|
|
|
|
|
|
|
[0xad,0xad,0xec,0x41], [0xd4,0xd4,0x67,0xb3], [0xa2,0xa2,0xfd,0x5f], [0xaf,0xaf,0xea,0x45], |
330
|
|
|
|
|
|
|
[0x9c,0x9c,0xbf,0x23], [0xa4,0xa4,0xf7,0x53], [0x72,0x72,0x96,0xe4], [0xc0,0xc0,0x5b,0x9b], |
331
|
|
|
|
|
|
|
[0xb7,0xb7,0xc2,0x75], [0xfd,0xfd,0x1c,0xe1], [0x93,0x93,0xae,0x3d], [0x26,0x26,0x6a,0x4c], |
332
|
|
|
|
|
|
|
[0x36,0x36,0x5a,0x6c], [0x3f,0x3f,0x41,0x7e], [0xf7,0xf7,0x02,0xf5], [0xcc,0xcc,0x4f,0x83], |
333
|
|
|
|
|
|
|
[0x34,0x34,0x5c,0x68], [0xa5,0xa5,0xf4,0x51], [0xe5,0xe5,0x34,0xd1], [0xf1,0xf1,0x08,0xf9], |
334
|
|
|
|
|
|
|
[0x71,0x71,0x93,0xe2], [0xd8,0xd8,0x73,0xab], [0x31,0x31,0x53,0x62], [0x15,0x15,0x3f,0x2a], |
335
|
|
|
|
|
|
|
[0x04,0x04,0x0c,0x08], [0xc7,0xc7,0x52,0x95], [0x23,0x23,0x65,0x46], [0xc3,0xc3,0x5e,0x9d], |
336
|
|
|
|
|
|
|
[0x18,0x18,0x28,0x30], [0x96,0x96,0xa1,0x37], [0x05,0x05,0x0f,0x0a], [0x9a,0x9a,0xb5,0x2f], |
337
|
|
|
|
|
|
|
[0x07,0x07,0x09,0x0e], [0x12,0x12,0x36,0x24], [0x80,0x80,0x9b,0x1b], [0xe2,0xe2,0x3d,0xdf], |
338
|
|
|
|
|
|
|
[0xeb,0xeb,0x26,0xcd], [0x27,0x27,0x69,0x4e], [0xb2,0xb2,0xcd,0x7f], [0x75,0x75,0x9f,0xea], |
339
|
|
|
|
|
|
|
[0x09,0x09,0x1b,0x12], [0x83,0x83,0x9e,0x1d], [0x2c,0x2c,0x74,0x58], [0x1a,0x1a,0x2e,0x34], |
340
|
|
|
|
|
|
|
[0x1b,0x1b,0x2d,0x36], [0x6e,0x6e,0xb2,0xdc], [0x5a,0x5a,0xee,0xb4], [0xa0,0xa0,0xfb,0x5b], |
341
|
|
|
|
|
|
|
[0x52,0x52,0xf6,0xa4], [0x3b,0x3b,0x4d,0x76], [0xd6,0xd6,0x61,0xb7], [0xb3,0xb3,0xce,0x7d], |
342
|
|
|
|
|
|
|
[0x29,0x29,0x7b,0x52], [0xe3,0xe3,0x3e,0xdd], [0x2f,0x2f,0x71,0x5e], [0x84,0x84,0x97,0x13], |
343
|
|
|
|
|
|
|
[0x53,0x53,0xf5,0xa6], [0xd1,0xd1,0x68,0xb9], [0x00,0x00,0x00,0x00], [0xed,0xed,0x2c,0xc1], |
344
|
|
|
|
|
|
|
[0x20,0x20,0x60,0x40], [0xfc,0xfc,0x1f,0xe3], [0xb1,0xb1,0xc8,0x79], [0x5b,0x5b,0xed,0xb6], |
345
|
|
|
|
|
|
|
[0x6a,0x6a,0xbe,0xd4], [0xcb,0xcb,0x46,0x8d], [0xbe,0xbe,0xd9,0x67], [0x39,0x39,0x4b,0x72], |
346
|
|
|
|
|
|
|
[0x4a,0x4a,0xde,0x94], [0x4c,0x4c,0xd4,0x98], [0x58,0x58,0xe8,0xb0], [0xcf,0xcf,0x4a,0x85], |
347
|
|
|
|
|
|
|
[0xd0,0xd0,0x6b,0xbb], [0xef,0xef,0x2a,0xc5], [0xaa,0xaa,0xe5,0x4f], [0xfb,0xfb,0x16,0xed], |
348
|
|
|
|
|
|
|
[0x43,0x43,0xc5,0x86], [0x4d,0x4d,0xd7,0x9a], [0x33,0x33,0x55,0x66], [0x85,0x85,0x94,0x11], |
349
|
|
|
|
|
|
|
[0x45,0x45,0xcf,0x8a], [0xf9,0xf9,0x10,0xe9], [0x02,0x02,0x06,0x04], [0x7f,0x7f,0x81,0xfe], |
350
|
|
|
|
|
|
|
[0x50,0x50,0xf0,0xa0], [0x3c,0x3c,0x44,0x78], [0x9f,0x9f,0xba,0x25], [0xa8,0xa8,0xe3,0x4b], |
351
|
|
|
|
|
|
|
[0x51,0x51,0xf3,0xa2], [0xa3,0xa3,0xfe,0x5d], [0x40,0x40,0xc0,0x80], [0x8f,0x8f,0x8a,0x05], |
352
|
|
|
|
|
|
|
[0x92,0x92,0xad,0x3f], [0x9d,0x9d,0xbc,0x21], [0x38,0x38,0x48,0x70], [0xf5,0xf5,0x04,0xf1], |
353
|
|
|
|
|
|
|
[0xbc,0xbc,0xdf,0x63], [0xb6,0xb6,0xc1,0x77], [0xda,0xda,0x75,0xaf], [0x21,0x21,0x63,0x42], |
354
|
|
|
|
|
|
|
[0x10,0x10,0x30,0x20], [0xff,0xff,0x1a,0xe5], [0xf3,0xf3,0x0e,0xfd], [0xd2,0xd2,0x6d,0xbf], |
355
|
|
|
|
|
|
|
[0xcd,0xcd,0x4c,0x81], [0x0c,0x0c,0x14,0x18], [0x13,0x13,0x35,0x26], [0xec,0xec,0x2f,0xc3], |
356
|
|
|
|
|
|
|
[0x5f,0x5f,0xe1,0xbe], [0x97,0x97,0xa2,0x35], [0x44,0x44,0xcc,0x88], [0x17,0x17,0x39,0x2e], |
357
|
|
|
|
|
|
|
[0xc4,0xc4,0x57,0x93], [0xa7,0xa7,0xf2,0x55], [0x7e,0x7e,0x82,0xfc], [0x3d,0x3d,0x47,0x7a], |
358
|
|
|
|
|
|
|
[0x64,0x64,0xac,0xc8], [0x5d,0x5d,0xe7,0xba], [0x19,0x19,0x2b,0x32], [0x73,0x73,0x95,0xe6], |
359
|
|
|
|
|
|
|
[0x60,0x60,0xa0,0xc0], [0x81,0x81,0x98,0x19], [0x4f,0x4f,0xd1,0x9e], [0xdc,0xdc,0x7f,0xa3], |
360
|
|
|
|
|
|
|
[0x22,0x22,0x66,0x44], [0x2a,0x2a,0x7e,0x54], [0x90,0x90,0xab,0x3b], [0x88,0x88,0x83,0x0b], |
361
|
|
|
|
|
|
|
[0x46,0x46,0xca,0x8c], [0xee,0xee,0x29,0xc7], [0xb8,0xb8,0xd3,0x6b], [0x14,0x14,0x3c,0x28], |
362
|
|
|
|
|
|
|
[0xde,0xde,0x79,0xa7], [0x5e,0x5e,0xe2,0xbc], [0x0b,0x0b,0x1d,0x16], [0xdb,0xdb,0x76,0xad], |
363
|
|
|
|
|
|
|
[0xe0,0xe0,0x3b,0xdb], [0x32,0x32,0x56,0x64], [0x3a,0x3a,0x4e,0x74], [0x0a,0x0a,0x1e,0x14], |
364
|
|
|
|
|
|
|
[0x49,0x49,0xdb,0x92], [0x06,0x06,0x0a,0x0c], [0x24,0x24,0x6c,0x48], [0x5c,0x5c,0xe4,0xb8], |
365
|
|
|
|
|
|
|
[0xc2,0xc2,0x5d,0x9f], [0xd3,0xd3,0x6e,0xbd], [0xac,0xac,0xef,0x43], [0x62,0x62,0xa6,0xc4], |
366
|
|
|
|
|
|
|
[0x91,0x91,0xa8,0x39], [0x95,0x95,0xa4,0x31], [0xe4,0xe4,0x37,0xd3], [0x79,0x79,0x8b,0xf2], |
367
|
|
|
|
|
|
|
[0xe7,0xe7,0x32,0xd5], [0xc8,0xc8,0x43,0x8b], [0x37,0x37,0x59,0x6e], [0x6d,0x6d,0xb7,0xda], |
368
|
|
|
|
|
|
|
[0x8d,0x8d,0x8c,0x01], [0xd5,0xd5,0x64,0xb1], [0x4e,0x4e,0xd2,0x9c], [0xa9,0xa9,0xe0,0x49], |
369
|
|
|
|
|
|
|
[0x6c,0x6c,0xb4,0xd8], [0x56,0x56,0xfa,0xac], [0xf4,0xf4,0x07,0xf3], [0xea,0xea,0x25,0xcf], |
370
|
|
|
|
|
|
|
[0x65,0x65,0xaf,0xca], [0x7a,0x7a,0x8e,0xf4], [0xae,0xae,0xe9,0x47], [0x08,0x08,0x18,0x10], |
371
|
|
|
|
|
|
|
[0xba,0xba,0xd5,0x6f], [0x78,0x78,0x88,0xf0], [0x25,0x25,0x6f,0x4a], [0x2e,0x2e,0x72,0x5c], |
372
|
|
|
|
|
|
|
[0x1c,0x1c,0x24,0x38], [0xa6,0xa6,0xf1,0x57], [0xb4,0xb4,0xc7,0x73], [0xc6,0xc6,0x51,0x97], |
373
|
|
|
|
|
|
|
[0xe8,0xe8,0x23,0xcb], [0xdd,0xdd,0x7c,0xa1], [0x74,0x74,0x9c,0xe8], [0x1f,0x1f,0x21,0x3e], |
374
|
|
|
|
|
|
|
[0x4b,0x4b,0xdd,0x96], [0xbd,0xbd,0xdc,0x61], [0x8b,0x8b,0x86,0x0d], [0x8a,0x8a,0x85,0x0f], |
375
|
|
|
|
|
|
|
[0x70,0x70,0x90,0xe0], [0x3e,0x3e,0x42,0x7c], [0xb5,0xb5,0xc4,0x71], [0x66,0x66,0xaa,0xcc], |
376
|
|
|
|
|
|
|
[0x48,0x48,0xd8,0x90], [0x03,0x03,0x05,0x06], [0xf6,0xf6,0x01,0xf7], [0x0e,0x0e,0x12,0x1c], |
377
|
|
|
|
|
|
|
[0x61,0x61,0xa3,0xc2], [0x35,0x35,0x5f,0x6a], [0x57,0x57,0xf9,0xae], [0xb9,0xb9,0xd0,0x69], |
378
|
|
|
|
|
|
|
[0x86,0x86,0x91,0x17], [0xc1,0xc1,0x58,0x99], [0x1d,0x1d,0x27,0x3a], [0x9e,0x9e,0xb9,0x27], |
379
|
|
|
|
|
|
|
[0xe1,0xe1,0x38,0xd9], [0xf8,0xf8,0x13,0xeb], [0x98,0x98,0xb3,0x2b], [0x11,0x11,0x33,0x22], |
380
|
|
|
|
|
|
|
[0x69,0x69,0xbb,0xd2], [0xd9,0xd9,0x70,0xa9], [0x8e,0x8e,0x89,0x07], [0x94,0x94,0xa7,0x33], |
381
|
|
|
|
|
|
|
[0x9b,0x9b,0xb6,0x2d], [0x1e,0x1e,0x22,0x3c], [0x87,0x87,0x92,0x15], [0xe9,0xe9,0x20,0xc9], |
382
|
|
|
|
|
|
|
[0xce,0xce,0x49,0x87], [0x55,0x55,0xff,0xaa], [0x28,0x28,0x78,0x50], [0xdf,0xdf,0x7a,0xa5], |
383
|
|
|
|
|
|
|
[0x8c,0x8c,0x8f,0x03], [0xa1,0xa1,0xf8,0x59], [0x89,0x89,0x80,0x09], [0x0d,0x0d,0x17,0x1a], |
384
|
|
|
|
|
|
|
[0xbf,0xbf,0xda,0x65], [0xe6,0xe6,0x31,0xd7], [0x42,0x42,0xc6,0x84], [0x68,0x68,0xb8,0xd0], |
385
|
|
|
|
|
|
|
[0x41,0x41,0xc3,0x82], [0x99,0x99,0xb0,0x29], [0x2d,0x2d,0x77,0x5a], [0x0f,0x0f,0x11,0x1e], |
386
|
|
|
|
|
|
|
[0xb0,0xb0,0xcb,0x7b], [0x54,0x54,0xfc,0xa8], [0xbb,0xbb,0xd6,0x6d], [0x16,0x16,0x3a,0x2c] |
387
|
|
|
|
|
|
|
); |
388
|
|
|
|
|
|
|
|
389
|
|
|
|
|
|
|
my @T5 = ( |
390
|
|
|
|
|
|
|
[0x51,0xf4,0xa7,0x50], [0x7e,0x41,0x65,0x53], [0x1a,0x17,0xa4,0xc3], [0x3a,0x27,0x5e,0x96], |
391
|
|
|
|
|
|
|
[0x3b,0xab,0x6b,0xcb], [0x1f,0x9d,0x45,0xf1], [0xac,0xfa,0x58,0xab], [0x4b,0xe3,0x03,0x93], |
392
|
|
|
|
|
|
|
[0x20,0x30,0xfa,0x55], [0xad,0x76,0x6d,0xf6], [0x88,0xcc,0x76,0x91], [0xf5,0x02,0x4c,0x25], |
393
|
|
|
|
|
|
|
[0x4f,0xe5,0xd7,0xfc], [0xc5,0x2a,0xcb,0xd7], [0x26,0x35,0x44,0x80], [0xb5,0x62,0xa3,0x8f], |
394
|
|
|
|
|
|
|
[0xde,0xb1,0x5a,0x49], [0x25,0xba,0x1b,0x67], [0x45,0xea,0x0e,0x98], [0x5d,0xfe,0xc0,0xe1], |
395
|
|
|
|
|
|
|
[0xc3,0x2f,0x75,0x02], [0x81,0x4c,0xf0,0x12], [0x8d,0x46,0x97,0xa3], [0x6b,0xd3,0xf9,0xc6], |
396
|
|
|
|
|
|
|
[0x03,0x8f,0x5f,0xe7], [0x15,0x92,0x9c,0x95], [0xbf,0x6d,0x7a,0xeb], [0x95,0x52,0x59,0xda], |
397
|
|
|
|
|
|
|
[0xd4,0xbe,0x83,0x2d], [0x58,0x74,0x21,0xd3], [0x49,0xe0,0x69,0x29], [0x8e,0xc9,0xc8,0x44], |
398
|
|
|
|
|
|
|
[0x75,0xc2,0x89,0x6a], [0xf4,0x8e,0x79,0x78], [0x99,0x58,0x3e,0x6b], [0x27,0xb9,0x71,0xdd], |
399
|
|
|
|
|
|
|
[0xbe,0xe1,0x4f,0xb6], [0xf0,0x88,0xad,0x17], [0xc9,0x20,0xac,0x66], [0x7d,0xce,0x3a,0xb4], |
400
|
|
|
|
|
|
|
[0x63,0xdf,0x4a,0x18], [0xe5,0x1a,0x31,0x82], [0x97,0x51,0x33,0x60], [0x62,0x53,0x7f,0x45], |
401
|
|
|
|
|
|
|
[0xb1,0x64,0x77,0xe0], [0xbb,0x6b,0xae,0x84], [0xfe,0x81,0xa0,0x1c], [0xf9,0x08,0x2b,0x94], |
402
|
|
|
|
|
|
|
[0x70,0x48,0x68,0x58], [0x8f,0x45,0xfd,0x19], [0x94,0xde,0x6c,0x87], [0x52,0x7b,0xf8,0xb7], |
403
|
|
|
|
|
|
|
[0xab,0x73,0xd3,0x23], [0x72,0x4b,0x02,0xe2], [0xe3,0x1f,0x8f,0x57], [0x66,0x55,0xab,0x2a], |
404
|
|
|
|
|
|
|
[0xb2,0xeb,0x28,0x07], [0x2f,0xb5,0xc2,0x03], [0x86,0xc5,0x7b,0x9a], [0xd3,0x37,0x08,0xa5], |
405
|
|
|
|
|
|
|
[0x30,0x28,0x87,0xf2], [0x23,0xbf,0xa5,0xb2], [0x02,0x03,0x6a,0xba], [0xed,0x16,0x82,0x5c], |
406
|
|
|
|
|
|
|
[0x8a,0xcf,0x1c,0x2b], [0xa7,0x79,0xb4,0x92], [0xf3,0x07,0xf2,0xf0], [0x4e,0x69,0xe2,0xa1], |
407
|
|
|
|
|
|
|
[0x65,0xda,0xf4,0xcd], [0x06,0x05,0xbe,0xd5], [0xd1,0x34,0x62,0x1f], [0xc4,0xa6,0xfe,0x8a], |
408
|
|
|
|
|
|
|
[0x34,0x2e,0x53,0x9d], [0xa2,0xf3,0x55,0xa0], [0x05,0x8a,0xe1,0x32], [0xa4,0xf6,0xeb,0x75], |
409
|
|
|
|
|
|
|
[0x0b,0x83,0xec,0x39], [0x40,0x60,0xef,0xaa], [0x5e,0x71,0x9f,0x06], [0xbd,0x6e,0x10,0x51], |
410
|
|
|
|
|
|
|
[0x3e,0x21,0x8a,0xf9], [0x96,0xdd,0x06,0x3d], [0xdd,0x3e,0x05,0xae], [0x4d,0xe6,0xbd,0x46], |
411
|
|
|
|
|
|
|
[0x91,0x54,0x8d,0xb5], [0x71,0xc4,0x5d,0x05], [0x04,0x06,0xd4,0x6f], [0x60,0x50,0x15,0xff], |
412
|
|
|
|
|
|
|
[0x19,0x98,0xfb,0x24], [0xd6,0xbd,0xe9,0x97], [0x89,0x40,0x43,0xcc], [0x67,0xd9,0x9e,0x77], |
413
|
|
|
|
|
|
|
[0xb0,0xe8,0x42,0xbd], [0x07,0x89,0x8b,0x88], [0xe7,0x19,0x5b,0x38], [0x79,0xc8,0xee,0xdb], |
414
|
|
|
|
|
|
|
[0xa1,0x7c,0x0a,0x47], [0x7c,0x42,0x0f,0xe9], [0xf8,0x84,0x1e,0xc9], [0x00,0x00,0x00,0x00], |
415
|
|
|
|
|
|
|
[0x09,0x80,0x86,0x83], [0x32,0x2b,0xed,0x48], [0x1e,0x11,0x70,0xac], [0x6c,0x5a,0x72,0x4e], |
416
|
|
|
|
|
|
|
[0xfd,0x0e,0xff,0xfb], [0x0f,0x85,0x38,0x56], [0x3d,0xae,0xd5,0x1e], [0x36,0x2d,0x39,0x27], |
417
|
|
|
|
|
|
|
[0x0a,0x0f,0xd9,0x64], [0x68,0x5c,0xa6,0x21], [0x9b,0x5b,0x54,0xd1], [0x24,0x36,0x2e,0x3a], |
418
|
|
|
|
|
|
|
[0x0c,0x0a,0x67,0xb1], [0x93,0x57,0xe7,0x0f], [0xb4,0xee,0x96,0xd2], [0x1b,0x9b,0x91,0x9e], |
419
|
|
|
|
|
|
|
[0x80,0xc0,0xc5,0x4f], [0x61,0xdc,0x20,0xa2], [0x5a,0x77,0x4b,0x69], [0x1c,0x12,0x1a,0x16], |
420
|
|
|
|
|
|
|
[0xe2,0x93,0xba,0x0a], [0xc0,0xa0,0x2a,0xe5], [0x3c,0x22,0xe0,0x43], [0x12,0x1b,0x17,0x1d], |
421
|
|
|
|
|
|
|
[0x0e,0x09,0x0d,0x0b], [0xf2,0x8b,0xc7,0xad], [0x2d,0xb6,0xa8,0xb9], [0x14,0x1e,0xa9,0xc8], |
422
|
|
|
|
|
|
|
[0x57,0xf1,0x19,0x85], [0xaf,0x75,0x07,0x4c], [0xee,0x99,0xdd,0xbb], [0xa3,0x7f,0x60,0xfd], |
423
|
|
|
|
|
|
|
[0xf7,0x01,0x26,0x9f], [0x5c,0x72,0xf5,0xbc], [0x44,0x66,0x3b,0xc5], [0x5b,0xfb,0x7e,0x34], |
424
|
|
|
|
|
|
|
[0x8b,0x43,0x29,0x76], [0xcb,0x23,0xc6,0xdc], [0xb6,0xed,0xfc,0x68], [0xb8,0xe4,0xf1,0x63], |
425
|
|
|
|
|
|
|
[0xd7,0x31,0xdc,0xca], [0x42,0x63,0x85,0x10], [0x13,0x97,0x22,0x40], [0x84,0xc6,0x11,0x20], |
426
|
|
|
|
|
|
|
[0x85,0x4a,0x24,0x7d], [0xd2,0xbb,0x3d,0xf8], [0xae,0xf9,0x32,0x11], [0xc7,0x29,0xa1,0x6d], |
427
|
|
|
|
|
|
|
[0x1d,0x9e,0x2f,0x4b], [0xdc,0xb2,0x30,0xf3], [0x0d,0x86,0x52,0xec], [0x77,0xc1,0xe3,0xd0], |
428
|
|
|
|
|
|
|
[0x2b,0xb3,0x16,0x6c], [0xa9,0x70,0xb9,0x99], [0x11,0x94,0x48,0xfa], [0x47,0xe9,0x64,0x22], |
429
|
|
|
|
|
|
|
[0xa8,0xfc,0x8c,0xc4], [0xa0,0xf0,0x3f,0x1a], [0x56,0x7d,0x2c,0xd8], [0x22,0x33,0x90,0xef], |
430
|
|
|
|
|
|
|
[0x87,0x49,0x4e,0xc7], [0xd9,0x38,0xd1,0xc1], [0x8c,0xca,0xa2,0xfe], [0x98,0xd4,0x0b,0x36], |
431
|
|
|
|
|
|
|
[0xa6,0xf5,0x81,0xcf], [0xa5,0x7a,0xde,0x28], [0xda,0xb7,0x8e,0x26], [0x3f,0xad,0xbf,0xa4], |
432
|
|
|
|
|
|
|
[0x2c,0x3a,0x9d,0xe4], [0x50,0x78,0x92,0x0d], [0x6a,0x5f,0xcc,0x9b], [0x54,0x7e,0x46,0x62], |
433
|
|
|
|
|
|
|
[0xf6,0x8d,0x13,0xc2], [0x90,0xd8,0xb8,0xe8], [0x2e,0x39,0xf7,0x5e], [0x82,0xc3,0xaf,0xf5], |
434
|
|
|
|
|
|
|
[0x9f,0x5d,0x80,0xbe], [0x69,0xd0,0x93,0x7c], [0x6f,0xd5,0x2d,0xa9], [0xcf,0x25,0x12,0xb3], |
435
|
|
|
|
|
|
|
[0xc8,0xac,0x99,0x3b], [0x10,0x18,0x7d,0xa7], [0xe8,0x9c,0x63,0x6e], [0xdb,0x3b,0xbb,0x7b], |
436
|
|
|
|
|
|
|
[0xcd,0x26,0x78,0x09], [0x6e,0x59,0x18,0xf4], [0xec,0x9a,0xb7,0x01], [0x83,0x4f,0x9a,0xa8], |
437
|
|
|
|
|
|
|
[0xe6,0x95,0x6e,0x65], [0xaa,0xff,0xe6,0x7e], [0x21,0xbc,0xcf,0x08], [0xef,0x15,0xe8,0xe6], |
438
|
|
|
|
|
|
|
[0xba,0xe7,0x9b,0xd9], [0x4a,0x6f,0x36,0xce], [0xea,0x9f,0x09,0xd4], [0x29,0xb0,0x7c,0xd6], |
439
|
|
|
|
|
|
|
[0x31,0xa4,0xb2,0xaf], [0x2a,0x3f,0x23,0x31], [0xc6,0xa5,0x94,0x30], [0x35,0xa2,0x66,0xc0], |
440
|
|
|
|
|
|
|
[0x74,0x4e,0xbc,0x37], [0xfc,0x82,0xca,0xa6], [0xe0,0x90,0xd0,0xb0], [0x33,0xa7,0xd8,0x15], |
441
|
|
|
|
|
|
|
[0xf1,0x04,0x98,0x4a], [0x41,0xec,0xda,0xf7], [0x7f,0xcd,0x50,0x0e], [0x17,0x91,0xf6,0x2f], |
442
|
|
|
|
|
|
|
[0x76,0x4d,0xd6,0x8d], [0x43,0xef,0xb0,0x4d], [0xcc,0xaa,0x4d,0x54], [0xe4,0x96,0x04,0xdf], |
443
|
|
|
|
|
|
|
[0x9e,0xd1,0xb5,0xe3], [0x4c,0x6a,0x88,0x1b], [0xc1,0x2c,0x1f,0xb8], [0x46,0x65,0x51,0x7f], |
444
|
|
|
|
|
|
|
[0x9d,0x5e,0xea,0x04], [0x01,0x8c,0x35,0x5d], [0xfa,0x87,0x74,0x73], [0xfb,0x0b,0x41,0x2e], |
445
|
|
|
|
|
|
|
[0xb3,0x67,0x1d,0x5a], [0x92,0xdb,0xd2,0x52], [0xe9,0x10,0x56,0x33], [0x6d,0xd6,0x47,0x13], |
446
|
|
|
|
|
|
|
[0x9a,0xd7,0x61,0x8c], [0x37,0xa1,0x0c,0x7a], [0x59,0xf8,0x14,0x8e], [0xeb,0x13,0x3c,0x89], |
447
|
|
|
|
|
|
|
[0xce,0xa9,0x27,0xee], [0xb7,0x61,0xc9,0x35], [0xe1,0x1c,0xe5,0xed], [0x7a,0x47,0xb1,0x3c], |
448
|
|
|
|
|
|
|
[0x9c,0xd2,0xdf,0x59], [0x55,0xf2,0x73,0x3f], [0x18,0x14,0xce,0x79], [0x73,0xc7,0x37,0xbf], |
449
|
|
|
|
|
|
|
[0x53,0xf7,0xcd,0xea], [0x5f,0xfd,0xaa,0x5b], [0xdf,0x3d,0x6f,0x14], [0x78,0x44,0xdb,0x86], |
450
|
|
|
|
|
|
|
[0xca,0xaf,0xf3,0x81], [0xb9,0x68,0xc4,0x3e], [0x38,0x24,0x34,0x2c], [0xc2,0xa3,0x40,0x5f], |
451
|
|
|
|
|
|
|
[0x16,0x1d,0xc3,0x72], [0xbc,0xe2,0x25,0x0c], [0x28,0x3c,0x49,0x8b], [0xff,0x0d,0x95,0x41], |
452
|
|
|
|
|
|
|
[0x39,0xa8,0x01,0x71], [0x08,0x0c,0xb3,0xde], [0xd8,0xb4,0xe4,0x9c], [0x64,0x56,0xc1,0x90], |
453
|
|
|
|
|
|
|
[0x7b,0xcb,0x84,0x61], [0xd5,0x32,0xb6,0x70], [0x48,0x6c,0x5c,0x74], [0xd0,0xb8,0x57,0x42] |
454
|
|
|
|
|
|
|
); |
455
|
|
|
|
|
|
|
|
456
|
|
|
|
|
|
|
my @T6 = ( |
457
|
|
|
|
|
|
|
[0x50,0x51,0xf4,0xa7], [0x53,0x7e,0x41,0x65], [0xc3,0x1a,0x17,0xa4], [0x96,0x3a,0x27,0x5e], |
458
|
|
|
|
|
|
|
[0xcb,0x3b,0xab,0x6b], [0xf1,0x1f,0x9d,0x45], [0xab,0xac,0xfa,0x58], [0x93,0x4b,0xe3,0x03], |
459
|
|
|
|
|
|
|
[0x55,0x20,0x30,0xfa], [0xf6,0xad,0x76,0x6d], [0x91,0x88,0xcc,0x76], [0x25,0xf5,0x02,0x4c], |
460
|
|
|
|
|
|
|
[0xfc,0x4f,0xe5,0xd7], [0xd7,0xc5,0x2a,0xcb], [0x80,0x26,0x35,0x44], [0x8f,0xb5,0x62,0xa3], |
461
|
|
|
|
|
|
|
[0x49,0xde,0xb1,0x5a], [0x67,0x25,0xba,0x1b], [0x98,0x45,0xea,0x0e], [0xe1,0x5d,0xfe,0xc0], |
462
|
|
|
|
|
|
|
[0x02,0xc3,0x2f,0x75], [0x12,0x81,0x4c,0xf0], [0xa3,0x8d,0x46,0x97], [0xc6,0x6b,0xd3,0xf9], |
463
|
|
|
|
|
|
|
[0xe7,0x03,0x8f,0x5f], [0x95,0x15,0x92,0x9c], [0xeb,0xbf,0x6d,0x7a], [0xda,0x95,0x52,0x59], |
464
|
|
|
|
|
|
|
[0x2d,0xd4,0xbe,0x83], [0xd3,0x58,0x74,0x21], [0x29,0x49,0xe0,0x69], [0x44,0x8e,0xc9,0xc8], |
465
|
|
|
|
|
|
|
[0x6a,0x75,0xc2,0x89], [0x78,0xf4,0x8e,0x79], [0x6b,0x99,0x58,0x3e], [0xdd,0x27,0xb9,0x71], |
466
|
|
|
|
|
|
|
[0xb6,0xbe,0xe1,0x4f], [0x17,0xf0,0x88,0xad], [0x66,0xc9,0x20,0xac], [0xb4,0x7d,0xce,0x3a], |
467
|
|
|
|
|
|
|
[0x18,0x63,0xdf,0x4a], [0x82,0xe5,0x1a,0x31], [0x60,0x97,0x51,0x33], [0x45,0x62,0x53,0x7f], |
468
|
|
|
|
|
|
|
[0xe0,0xb1,0x64,0x77], [0x84,0xbb,0x6b,0xae], [0x1c,0xfe,0x81,0xa0], [0x94,0xf9,0x08,0x2b], |
469
|
|
|
|
|
|
|
[0x58,0x70,0x48,0x68], [0x19,0x8f,0x45,0xfd], [0x87,0x94,0xde,0x6c], [0xb7,0x52,0x7b,0xf8], |
470
|
|
|
|
|
|
|
[0x23,0xab,0x73,0xd3], [0xe2,0x72,0x4b,0x02], [0x57,0xe3,0x1f,0x8f], [0x2a,0x66,0x55,0xab], |
471
|
|
|
|
|
|
|
[0x07,0xb2,0xeb,0x28], [0x03,0x2f,0xb5,0xc2], [0x9a,0x86,0xc5,0x7b], [0xa5,0xd3,0x37,0x08], |
472
|
|
|
|
|
|
|
[0xf2,0x30,0x28,0x87], [0xb2,0x23,0xbf,0xa5], [0xba,0x02,0x03,0x6a], [0x5c,0xed,0x16,0x82], |
473
|
|
|
|
|
|
|
[0x2b,0x8a,0xcf,0x1c], [0x92,0xa7,0x79,0xb4], [0xf0,0xf3,0x07,0xf2], [0xa1,0x4e,0x69,0xe2], |
474
|
|
|
|
|
|
|
[0xcd,0x65,0xda,0xf4], [0xd5,0x06,0x05,0xbe], [0x1f,0xd1,0x34,0x62], [0x8a,0xc4,0xa6,0xfe], |
475
|
|
|
|
|
|
|
[0x9d,0x34,0x2e,0x53], [0xa0,0xa2,0xf3,0x55], [0x32,0x05,0x8a,0xe1], [0x75,0xa4,0xf6,0xeb], |
476
|
|
|
|
|
|
|
[0x39,0x0b,0x83,0xec], [0xaa,0x40,0x60,0xef], [0x06,0x5e,0x71,0x9f], [0x51,0xbd,0x6e,0x10], |
477
|
|
|
|
|
|
|
[0xf9,0x3e,0x21,0x8a], [0x3d,0x96,0xdd,0x06], [0xae,0xdd,0x3e,0x05], [0x46,0x4d,0xe6,0xbd], |
478
|
|
|
|
|
|
|
[0xb5,0x91,0x54,0x8d], [0x05,0x71,0xc4,0x5d], [0x6f,0x04,0x06,0xd4], [0xff,0x60,0x50,0x15], |
479
|
|
|
|
|
|
|
[0x24,0x19,0x98,0xfb], [0x97,0xd6,0xbd,0xe9], [0xcc,0x89,0x40,0x43], [0x77,0x67,0xd9,0x9e], |
480
|
|
|
|
|
|
|
[0xbd,0xb0,0xe8,0x42], [0x88,0x07,0x89,0x8b], [0x38,0xe7,0x19,0x5b], [0xdb,0x79,0xc8,0xee], |
481
|
|
|
|
|
|
|
[0x47,0xa1,0x7c,0x0a], [0xe9,0x7c,0x42,0x0f], [0xc9,0xf8,0x84,0x1e], [0x00,0x00,0x00,0x00], |
482
|
|
|
|
|
|
|
[0x83,0x09,0x80,0x86], [0x48,0x32,0x2b,0xed], [0xac,0x1e,0x11,0x70], [0x4e,0x6c,0x5a,0x72], |
483
|
|
|
|
|
|
|
[0xfb,0xfd,0x0e,0xff], [0x56,0x0f,0x85,0x38], [0x1e,0x3d,0xae,0xd5], [0x27,0x36,0x2d,0x39], |
484
|
|
|
|
|
|
|
[0x64,0x0a,0x0f,0xd9], [0x21,0x68,0x5c,0xa6], [0xd1,0x9b,0x5b,0x54], [0x3a,0x24,0x36,0x2e], |
485
|
|
|
|
|
|
|
[0xb1,0x0c,0x0a,0x67], [0x0f,0x93,0x57,0xe7], [0xd2,0xb4,0xee,0x96], [0x9e,0x1b,0x9b,0x91], |
486
|
|
|
|
|
|
|
[0x4f,0x80,0xc0,0xc5], [0xa2,0x61,0xdc,0x20], [0x69,0x5a,0x77,0x4b], [0x16,0x1c,0x12,0x1a], |
487
|
|
|
|
|
|
|
[0x0a,0xe2,0x93,0xba], [0xe5,0xc0,0xa0,0x2a], [0x43,0x3c,0x22,0xe0], [0x1d,0x12,0x1b,0x17], |
488
|
|
|
|
|
|
|
[0x0b,0x0e,0x09,0x0d], [0xad,0xf2,0x8b,0xc7], [0xb9,0x2d,0xb6,0xa8], [0xc8,0x14,0x1e,0xa9], |
489
|
|
|
|
|
|
|
[0x85,0x57,0xf1,0x19], [0x4c,0xaf,0x75,0x07], [0xbb,0xee,0x99,0xdd], [0xfd,0xa3,0x7f,0x60], |
490
|
|
|
|
|
|
|
[0x9f,0xf7,0x01,0x26], [0xbc,0x5c,0x72,0xf5], [0xc5,0x44,0x66,0x3b], [0x34,0x5b,0xfb,0x7e], |
491
|
|
|
|
|
|
|
[0x76,0x8b,0x43,0x29], [0xdc,0xcb,0x23,0xc6], [0x68,0xb6,0xed,0xfc], [0x63,0xb8,0xe4,0xf1], |
492
|
|
|
|
|
|
|
[0xca,0xd7,0x31,0xdc], [0x10,0x42,0x63,0x85], [0x40,0x13,0x97,0x22], [0x20,0x84,0xc6,0x11], |
493
|
|
|
|
|
|
|
[0x7d,0x85,0x4a,0x24], [0xf8,0xd2,0xbb,0x3d], [0x11,0xae,0xf9,0x32], [0x6d,0xc7,0x29,0xa1], |
494
|
|
|
|
|
|
|
[0x4b,0x1d,0x9e,0x2f], [0xf3,0xdc,0xb2,0x30], [0xec,0x0d,0x86,0x52], [0xd0,0x77,0xc1,0xe3], |
495
|
|
|
|
|
|
|
[0x6c,0x2b,0xb3,0x16], [0x99,0xa9,0x70,0xb9], [0xfa,0x11,0x94,0x48], [0x22,0x47,0xe9,0x64], |
496
|
|
|
|
|
|
|
[0xc4,0xa8,0xfc,0x8c], [0x1a,0xa0,0xf0,0x3f], [0xd8,0x56,0x7d,0x2c], [0xef,0x22,0x33,0x90], |
497
|
|
|
|
|
|
|
[0xc7,0x87,0x49,0x4e], [0xc1,0xd9,0x38,0xd1], [0xfe,0x8c,0xca,0xa2], [0x36,0x98,0xd4,0x0b], |
498
|
|
|
|
|
|
|
[0xcf,0xa6,0xf5,0x81], [0x28,0xa5,0x7a,0xde], [0x26,0xda,0xb7,0x8e], [0xa4,0x3f,0xad,0xbf], |
499
|
|
|
|
|
|
|
[0xe4,0x2c,0x3a,0x9d], [0x0d,0x50,0x78,0x92], [0x9b,0x6a,0x5f,0xcc], [0x62,0x54,0x7e,0x46], |
500
|
|
|
|
|
|
|
[0xc2,0xf6,0x8d,0x13], [0xe8,0x90,0xd8,0xb8], [0x5e,0x2e,0x39,0xf7], [0xf5,0x82,0xc3,0xaf], |
501
|
|
|
|
|
|
|
[0xbe,0x9f,0x5d,0x80], [0x7c,0x69,0xd0,0x93], [0xa9,0x6f,0xd5,0x2d], [0xb3,0xcf,0x25,0x12], |
502
|
|
|
|
|
|
|
[0x3b,0xc8,0xac,0x99], [0xa7,0x10,0x18,0x7d], [0x6e,0xe8,0x9c,0x63], [0x7b,0xdb,0x3b,0xbb], |
503
|
|
|
|
|
|
|
[0x09,0xcd,0x26,0x78], [0xf4,0x6e,0x59,0x18], [0x01,0xec,0x9a,0xb7], [0xa8,0x83,0x4f,0x9a], |
504
|
|
|
|
|
|
|
[0x65,0xe6,0x95,0x6e], [0x7e,0xaa,0xff,0xe6], [0x08,0x21,0xbc,0xcf], [0xe6,0xef,0x15,0xe8], |
505
|
|
|
|
|
|
|
[0xd9,0xba,0xe7,0x9b], [0xce,0x4a,0x6f,0x36], [0xd4,0xea,0x9f,0x09], [0xd6,0x29,0xb0,0x7c], |
506
|
|
|
|
|
|
|
[0xaf,0x31,0xa4,0xb2], [0x31,0x2a,0x3f,0x23], [0x30,0xc6,0xa5,0x94], [0xc0,0x35,0xa2,0x66], |
507
|
|
|
|
|
|
|
[0x37,0x74,0x4e,0xbc], [0xa6,0xfc,0x82,0xca], [0xb0,0xe0,0x90,0xd0], [0x15,0x33,0xa7,0xd8], |
508
|
|
|
|
|
|
|
[0x4a,0xf1,0x04,0x98], [0xf7,0x41,0xec,0xda], [0x0e,0x7f,0xcd,0x50], [0x2f,0x17,0x91,0xf6], |
509
|
|
|
|
|
|
|
[0x8d,0x76,0x4d,0xd6], [0x4d,0x43,0xef,0xb0], [0x54,0xcc,0xaa,0x4d], [0xdf,0xe4,0x96,0x04], |
510
|
|
|
|
|
|
|
[0xe3,0x9e,0xd1,0xb5], [0x1b,0x4c,0x6a,0x88], [0xb8,0xc1,0x2c,0x1f], [0x7f,0x46,0x65,0x51], |
511
|
|
|
|
|
|
|
[0x04,0x9d,0x5e,0xea], [0x5d,0x01,0x8c,0x35], [0x73,0xfa,0x87,0x74], [0x2e,0xfb,0x0b,0x41], |
512
|
|
|
|
|
|
|
[0x5a,0xb3,0x67,0x1d], [0x52,0x92,0xdb,0xd2], [0x33,0xe9,0x10,0x56], [0x13,0x6d,0xd6,0x47], |
513
|
|
|
|
|
|
|
[0x8c,0x9a,0xd7,0x61], [0x7a,0x37,0xa1,0x0c], [0x8e,0x59,0xf8,0x14], [0x89,0xeb,0x13,0x3c], |
514
|
|
|
|
|
|
|
[0xee,0xce,0xa9,0x27], [0x35,0xb7,0x61,0xc9], [0xed,0xe1,0x1c,0xe5], [0x3c,0x7a,0x47,0xb1], |
515
|
|
|
|
|
|
|
[0x59,0x9c,0xd2,0xdf], [0x3f,0x55,0xf2,0x73], [0x79,0x18,0x14,0xce], [0xbf,0x73,0xc7,0x37], |
516
|
|
|
|
|
|
|
[0xea,0x53,0xf7,0xcd], [0x5b,0x5f,0xfd,0xaa], [0x14,0xdf,0x3d,0x6f], [0x86,0x78,0x44,0xdb], |
517
|
|
|
|
|
|
|
[0x81,0xca,0xaf,0xf3], [0x3e,0xb9,0x68,0xc4], [0x2c,0x38,0x24,0x34], [0x5f,0xc2,0xa3,0x40], |
518
|
|
|
|
|
|
|
[0x72,0x16,0x1d,0xc3], [0x0c,0xbc,0xe2,0x25], [0x8b,0x28,0x3c,0x49], [0x41,0xff,0x0d,0x95], |
519
|
|
|
|
|
|
|
[0x71,0x39,0xa8,0x01], [0xde,0x08,0x0c,0xb3], [0x9c,0xd8,0xb4,0xe4], [0x90,0x64,0x56,0xc1], |
520
|
|
|
|
|
|
|
[0x61,0x7b,0xcb,0x84], [0x70,0xd5,0x32,0xb6], [0x74,0x48,0x6c,0x5c], [0x42,0xd0,0xb8,0x57] |
521
|
|
|
|
|
|
|
); |
522
|
|
|
|
|
|
|
|
523
|
|
|
|
|
|
|
my @T7 = ( |
524
|
|
|
|
|
|
|
[0xa7,0x50,0x51,0xf4], [0x65,0x53,0x7e,0x41], [0xa4,0xc3,0x1a,0x17], [0x5e,0x96,0x3a,0x27], |
525
|
|
|
|
|
|
|
[0x6b,0xcb,0x3b,0xab], [0x45,0xf1,0x1f,0x9d], [0x58,0xab,0xac,0xfa], [0x03,0x93,0x4b,0xe3], |
526
|
|
|
|
|
|
|
[0xfa,0x55,0x20,0x30], [0x6d,0xf6,0xad,0x76], [0x76,0x91,0x88,0xcc], [0x4c,0x25,0xf5,0x02], |
527
|
|
|
|
|
|
|
[0xd7,0xfc,0x4f,0xe5], [0xcb,0xd7,0xc5,0x2a], [0x44,0x80,0x26,0x35], [0xa3,0x8f,0xb5,0x62], |
528
|
|
|
|
|
|
|
[0x5a,0x49,0xde,0xb1], [0x1b,0x67,0x25,0xba], [0x0e,0x98,0x45,0xea], [0xc0,0xe1,0x5d,0xfe], |
529
|
|
|
|
|
|
|
[0x75,0x02,0xc3,0x2f], [0xf0,0x12,0x81,0x4c], [0x97,0xa3,0x8d,0x46], [0xf9,0xc6,0x6b,0xd3], |
530
|
|
|
|
|
|
|
[0x5f,0xe7,0x03,0x8f], [0x9c,0x95,0x15,0x92], [0x7a,0xeb,0xbf,0x6d], [0x59,0xda,0x95,0x52], |
531
|
|
|
|
|
|
|
[0x83,0x2d,0xd4,0xbe], [0x21,0xd3,0x58,0x74], [0x69,0x29,0x49,0xe0], [0xc8,0x44,0x8e,0xc9], |
532
|
|
|
|
|
|
|
[0x89,0x6a,0x75,0xc2], [0x79,0x78,0xf4,0x8e], [0x3e,0x6b,0x99,0x58], [0x71,0xdd,0x27,0xb9], |
533
|
|
|
|
|
|
|
[0x4f,0xb6,0xbe,0xe1], [0xad,0x17,0xf0,0x88], [0xac,0x66,0xc9,0x20], [0x3a,0xb4,0x7d,0xce], |
534
|
|
|
|
|
|
|
[0x4a,0x18,0x63,0xdf], [0x31,0x82,0xe5,0x1a], [0x33,0x60,0x97,0x51], [0x7f,0x45,0x62,0x53], |
535
|
|
|
|
|
|
|
[0x77,0xe0,0xb1,0x64], [0xae,0x84,0xbb,0x6b], [0xa0,0x1c,0xfe,0x81], [0x2b,0x94,0xf9,0x08], |
536
|
|
|
|
|
|
|
[0x68,0x58,0x70,0x48], [0xfd,0x19,0x8f,0x45], [0x6c,0x87,0x94,0xde], [0xf8,0xb7,0x52,0x7b], |
537
|
|
|
|
|
|
|
[0xd3,0x23,0xab,0x73], [0x02,0xe2,0x72,0x4b], [0x8f,0x57,0xe3,0x1f], [0xab,0x2a,0x66,0x55], |
538
|
|
|
|
|
|
|
[0x28,0x07,0xb2,0xeb], [0xc2,0x03,0x2f,0xb5], [0x7b,0x9a,0x86,0xc5], [0x08,0xa5,0xd3,0x37], |
539
|
|
|
|
|
|
|
[0x87,0xf2,0x30,0x28], [0xa5,0xb2,0x23,0xbf], [0x6a,0xba,0x02,0x03], [0x82,0x5c,0xed,0x16], |
540
|
|
|
|
|
|
|
[0x1c,0x2b,0x8a,0xcf], [0xb4,0x92,0xa7,0x79], [0xf2,0xf0,0xf3,0x07], [0xe2,0xa1,0x4e,0x69], |
541
|
|
|
|
|
|
|
[0xf4,0xcd,0x65,0xda], [0xbe,0xd5,0x06,0x05], [0x62,0x1f,0xd1,0x34], [0xfe,0x8a,0xc4,0xa6], |
542
|
|
|
|
|
|
|
[0x53,0x9d,0x34,0x2e], [0x55,0xa0,0xa2,0xf3], [0xe1,0x32,0x05,0x8a], [0xeb,0x75,0xa4,0xf6], |
543
|
|
|
|
|
|
|
[0xec,0x39,0x0b,0x83], [0xef,0xaa,0x40,0x60], [0x9f,0x06,0x5e,0x71], [0x10,0x51,0xbd,0x6e], |
544
|
|
|
|
|
|
|
[0x8a,0xf9,0x3e,0x21], [0x06,0x3d,0x96,0xdd], [0x05,0xae,0xdd,0x3e], [0xbd,0x46,0x4d,0xe6], |
545
|
|
|
|
|
|
|
[0x8d,0xb5,0x91,0x54], [0x5d,0x05,0x71,0xc4], [0xd4,0x6f,0x04,0x06], [0x15,0xff,0x60,0x50], |
546
|
|
|
|
|
|
|
[0xfb,0x24,0x19,0x98], [0xe9,0x97,0xd6,0xbd], [0x43,0xcc,0x89,0x40], [0x9e,0x77,0x67,0xd9], |
547
|
|
|
|
|
|
|
[0x42,0xbd,0xb0,0xe8], [0x8b,0x88,0x07,0x89], [0x5b,0x38,0xe7,0x19], [0xee,0xdb,0x79,0xc8], |
548
|
|
|
|
|
|
|
[0x0a,0x47,0xa1,0x7c], [0x0f,0xe9,0x7c,0x42], [0x1e,0xc9,0xf8,0x84], [0x00,0x00,0x00,0x00], |
549
|
|
|
|
|
|
|
[0x86,0x83,0x09,0x80], [0xed,0x48,0x32,0x2b], [0x70,0xac,0x1e,0x11], [0x72,0x4e,0x6c,0x5a], |
550
|
|
|
|
|
|
|
[0xff,0xfb,0xfd,0x0e], [0x38,0x56,0x0f,0x85], [0xd5,0x1e,0x3d,0xae], [0x39,0x27,0x36,0x2d], |
551
|
|
|
|
|
|
|
[0xd9,0x64,0x0a,0x0f], [0xa6,0x21,0x68,0x5c], [0x54,0xd1,0x9b,0x5b], [0x2e,0x3a,0x24,0x36], |
552
|
|
|
|
|
|
|
[0x67,0xb1,0x0c,0x0a], [0xe7,0x0f,0x93,0x57], [0x96,0xd2,0xb4,0xee], [0x91,0x9e,0x1b,0x9b], |
553
|
|
|
|
|
|
|
[0xc5,0x4f,0x80,0xc0], [0x20,0xa2,0x61,0xdc], [0x4b,0x69,0x5a,0x77], [0x1a,0x16,0x1c,0x12], |
554
|
|
|
|
|
|
|
[0xba,0x0a,0xe2,0x93], [0x2a,0xe5,0xc0,0xa0], [0xe0,0x43,0x3c,0x22], [0x17,0x1d,0x12,0x1b], |
555
|
|
|
|
|
|
|
[0x0d,0x0b,0x0e,0x09], [0xc7,0xad,0xf2,0x8b], [0xa8,0xb9,0x2d,0xb6], [0xa9,0xc8,0x14,0x1e], |
556
|
|
|
|
|
|
|
[0x19,0x85,0x57,0xf1], [0x07,0x4c,0xaf,0x75], [0xdd,0xbb,0xee,0x99], [0x60,0xfd,0xa3,0x7f], |
557
|
|
|
|
|
|
|
[0x26,0x9f,0xf7,0x01], [0xf5,0xbc,0x5c,0x72], [0x3b,0xc5,0x44,0x66], [0x7e,0x34,0x5b,0xfb], |
558
|
|
|
|
|
|
|
[0x29,0x76,0x8b,0x43], [0xc6,0xdc,0xcb,0x23], [0xfc,0x68,0xb6,0xed], [0xf1,0x63,0xb8,0xe4], |
559
|
|
|
|
|
|
|
[0xdc,0xca,0xd7,0x31], [0x85,0x10,0x42,0x63], [0x22,0x40,0x13,0x97], [0x11,0x20,0x84,0xc6], |
560
|
|
|
|
|
|
|
[0x24,0x7d,0x85,0x4a], [0x3d,0xf8,0xd2,0xbb], [0x32,0x11,0xae,0xf9], [0xa1,0x6d,0xc7,0x29], |
561
|
|
|
|
|
|
|
[0x2f,0x4b,0x1d,0x9e], [0x30,0xf3,0xdc,0xb2], [0x52,0xec,0x0d,0x86], [0xe3,0xd0,0x77,0xc1], |
562
|
|
|
|
|
|
|
[0x16,0x6c,0x2b,0xb3], [0xb9,0x99,0xa9,0x70], [0x48,0xfa,0x11,0x94], [0x64,0x22,0x47,0xe9], |
563
|
|
|
|
|
|
|
[0x8c,0xc4,0xa8,0xfc], [0x3f,0x1a,0xa0,0xf0], [0x2c,0xd8,0x56,0x7d], [0x90,0xef,0x22,0x33], |
564
|
|
|
|
|
|
|
[0x4e,0xc7,0x87,0x49], [0xd1,0xc1,0xd9,0x38], [0xa2,0xfe,0x8c,0xca], [0x0b,0x36,0x98,0xd4], |
565
|
|
|
|
|
|
|
[0x81,0xcf,0xa6,0xf5], [0xde,0x28,0xa5,0x7a], [0x8e,0x26,0xda,0xb7], [0xbf,0xa4,0x3f,0xad], |
566
|
|
|
|
|
|
|
[0x9d,0xe4,0x2c,0x3a], [0x92,0x0d,0x50,0x78], [0xcc,0x9b,0x6a,0x5f], [0x46,0x62,0x54,0x7e], |
567
|
|
|
|
|
|
|
[0x13,0xc2,0xf6,0x8d], [0xb8,0xe8,0x90,0xd8], [0xf7,0x5e,0x2e,0x39], [0xaf,0xf5,0x82,0xc3], |
568
|
|
|
|
|
|
|
[0x80,0xbe,0x9f,0x5d], [0x93,0x7c,0x69,0xd0], [0x2d,0xa9,0x6f,0xd5], [0x12,0xb3,0xcf,0x25], |
569
|
|
|
|
|
|
|
[0x99,0x3b,0xc8,0xac], [0x7d,0xa7,0x10,0x18], [0x63,0x6e,0xe8,0x9c], [0xbb,0x7b,0xdb,0x3b], |
570
|
|
|
|
|
|
|
[0x78,0x09,0xcd,0x26], [0x18,0xf4,0x6e,0x59], [0xb7,0x01,0xec,0x9a], [0x9a,0xa8,0x83,0x4f], |
571
|
|
|
|
|
|
|
[0x6e,0x65,0xe6,0x95], [0xe6,0x7e,0xaa,0xff], [0xcf,0x08,0x21,0xbc], [0xe8,0xe6,0xef,0x15], |
572
|
|
|
|
|
|
|
[0x9b,0xd9,0xba,0xe7], [0x36,0xce,0x4a,0x6f], [0x09,0xd4,0xea,0x9f], [0x7c,0xd6,0x29,0xb0], |
573
|
|
|
|
|
|
|
[0xb2,0xaf,0x31,0xa4], [0x23,0x31,0x2a,0x3f], [0x94,0x30,0xc6,0xa5], [0x66,0xc0,0x35,0xa2], |
574
|
|
|
|
|
|
|
[0xbc,0x37,0x74,0x4e], [0xca,0xa6,0xfc,0x82], [0xd0,0xb0,0xe0,0x90], [0xd8,0x15,0x33,0xa7], |
575
|
|
|
|
|
|
|
[0x98,0x4a,0xf1,0x04], [0xda,0xf7,0x41,0xec], [0x50,0x0e,0x7f,0xcd], [0xf6,0x2f,0x17,0x91], |
576
|
|
|
|
|
|
|
[0xd6,0x8d,0x76,0x4d], [0xb0,0x4d,0x43,0xef], [0x4d,0x54,0xcc,0xaa], [0x04,0xdf,0xe4,0x96], |
577
|
|
|
|
|
|
|
[0xb5,0xe3,0x9e,0xd1], [0x88,0x1b,0x4c,0x6a], [0x1f,0xb8,0xc1,0x2c], [0x51,0x7f,0x46,0x65], |
578
|
|
|
|
|
|
|
[0xea,0x04,0x9d,0x5e], [0x35,0x5d,0x01,0x8c], [0x74,0x73,0xfa,0x87], [0x41,0x2e,0xfb,0x0b], |
579
|
|
|
|
|
|
|
[0x1d,0x5a,0xb3,0x67], [0xd2,0x52,0x92,0xdb], [0x56,0x33,0xe9,0x10], [0x47,0x13,0x6d,0xd6], |
580
|
|
|
|
|
|
|
[0x61,0x8c,0x9a,0xd7], [0x0c,0x7a,0x37,0xa1], [0x14,0x8e,0x59,0xf8], [0x3c,0x89,0xeb,0x13], |
581
|
|
|
|
|
|
|
[0x27,0xee,0xce,0xa9], [0xc9,0x35,0xb7,0x61], [0xe5,0xed,0xe1,0x1c], [0xb1,0x3c,0x7a,0x47], |
582
|
|
|
|
|
|
|
[0xdf,0x59,0x9c,0xd2], [0x73,0x3f,0x55,0xf2], [0xce,0x79,0x18,0x14], [0x37,0xbf,0x73,0xc7], |
583
|
|
|
|
|
|
|
[0xcd,0xea,0x53,0xf7], [0xaa,0x5b,0x5f,0xfd], [0x6f,0x14,0xdf,0x3d], [0xdb,0x86,0x78,0x44], |
584
|
|
|
|
|
|
|
[0xf3,0x81,0xca,0xaf], [0xc4,0x3e,0xb9,0x68], [0x34,0x2c,0x38,0x24], [0x40,0x5f,0xc2,0xa3], |
585
|
|
|
|
|
|
|
[0xc3,0x72,0x16,0x1d], [0x25,0x0c,0xbc,0xe2], [0x49,0x8b,0x28,0x3c], [0x95,0x41,0xff,0x0d], |
586
|
|
|
|
|
|
|
[0x01,0x71,0x39,0xa8], [0xb3,0xde,0x08,0x0c], [0xe4,0x9c,0xd8,0xb4], [0xc1,0x90,0x64,0x56], |
587
|
|
|
|
|
|
|
[0x84,0x61,0x7b,0xcb], [0xb6,0x70,0xd5,0x32], [0x5c,0x74,0x48,0x6c], [0x57,0x42,0xd0,0xb8] |
588
|
|
|
|
|
|
|
); |
589
|
|
|
|
|
|
|
|
590
|
|
|
|
|
|
|
my @T8 = ( |
591
|
|
|
|
|
|
|
[0xf4,0xa7,0x50,0x51], [0x41,0x65,0x53,0x7e], [0x17,0xa4,0xc3,0x1a], [0x27,0x5e,0x96,0x3a], |
592
|
|
|
|
|
|
|
[0xab,0x6b,0xcb,0x3b], [0x9d,0x45,0xf1,0x1f], [0xfa,0x58,0xab,0xac], [0xe3,0x03,0x93,0x4b], |
593
|
|
|
|
|
|
|
[0x30,0xfa,0x55,0x20], [0x76,0x6d,0xf6,0xad], [0xcc,0x76,0x91,0x88], [0x02,0x4c,0x25,0xf5], |
594
|
|
|
|
|
|
|
[0xe5,0xd7,0xfc,0x4f], [0x2a,0xcb,0xd7,0xc5], [0x35,0x44,0x80,0x26], [0x62,0xa3,0x8f,0xb5], |
595
|
|
|
|
|
|
|
[0xb1,0x5a,0x49,0xde], [0xba,0x1b,0x67,0x25], [0xea,0x0e,0x98,0x45], [0xfe,0xc0,0xe1,0x5d], |
596
|
|
|
|
|
|
|
[0x2f,0x75,0x02,0xc3], [0x4c,0xf0,0x12,0x81], [0x46,0x97,0xa3,0x8d], [0xd3,0xf9,0xc6,0x6b], |
597
|
|
|
|
|
|
|
[0x8f,0x5f,0xe7,0x03], [0x92,0x9c,0x95,0x15], [0x6d,0x7a,0xeb,0xbf], [0x52,0x59,0xda,0x95], |
598
|
|
|
|
|
|
|
[0xbe,0x83,0x2d,0xd4], [0x74,0x21,0xd3,0x58], [0xe0,0x69,0x29,0x49], [0xc9,0xc8,0x44,0x8e], |
599
|
|
|
|
|
|
|
[0xc2,0x89,0x6a,0x75], [0x8e,0x79,0x78,0xf4], [0x58,0x3e,0x6b,0x99], [0xb9,0x71,0xdd,0x27], |
600
|
|
|
|
|
|
|
[0xe1,0x4f,0xb6,0xbe], [0x88,0xad,0x17,0xf0], [0x20,0xac,0x66,0xc9], [0xce,0x3a,0xb4,0x7d], |
601
|
|
|
|
|
|
|
[0xdf,0x4a,0x18,0x63], [0x1a,0x31,0x82,0xe5], [0x51,0x33,0x60,0x97], [0x53,0x7f,0x45,0x62], |
602
|
|
|
|
|
|
|
[0x64,0x77,0xe0,0xb1], [0x6b,0xae,0x84,0xbb], [0x81,0xa0,0x1c,0xfe], [0x08,0x2b,0x94,0xf9], |
603
|
|
|
|
|
|
|
[0x48,0x68,0x58,0x70], [0x45,0xfd,0x19,0x8f], [0xde,0x6c,0x87,0x94], [0x7b,0xf8,0xb7,0x52], |
604
|
|
|
|
|
|
|
[0x73,0xd3,0x23,0xab], [0x4b,0x02,0xe2,0x72], [0x1f,0x8f,0x57,0xe3], [0x55,0xab,0x2a,0x66], |
605
|
|
|
|
|
|
|
[0xeb,0x28,0x07,0xb2], [0xb5,0xc2,0x03,0x2f], [0xc5,0x7b,0x9a,0x86], [0x37,0x08,0xa5,0xd3], |
606
|
|
|
|
|
|
|
[0x28,0x87,0xf2,0x30], [0xbf,0xa5,0xb2,0x23], [0x03,0x6a,0xba,0x02], [0x16,0x82,0x5c,0xed], |
607
|
|
|
|
|
|
|
[0xcf,0x1c,0x2b,0x8a], [0x79,0xb4,0x92,0xa7], [0x07,0xf2,0xf0,0xf3], [0x69,0xe2,0xa1,0x4e], |
608
|
|
|
|
|
|
|
[0xda,0xf4,0xcd,0x65], [0x05,0xbe,0xd5,0x06], [0x34,0x62,0x1f,0xd1], [0xa6,0xfe,0x8a,0xc4], |
609
|
|
|
|
|
|
|
[0x2e,0x53,0x9d,0x34], [0xf3,0x55,0xa0,0xa2], [0x8a,0xe1,0x32,0x05], [0xf6,0xeb,0x75,0xa4], |
610
|
|
|
|
|
|
|
[0x83,0xec,0x39,0x0b], [0x60,0xef,0xaa,0x40], [0x71,0x9f,0x06,0x5e], [0x6e,0x10,0x51,0xbd], |
611
|
|
|
|
|
|
|
[0x21,0x8a,0xf9,0x3e], [0xdd,0x06,0x3d,0x96], [0x3e,0x05,0xae,0xdd], [0xe6,0xbd,0x46,0x4d], |
612
|
|
|
|
|
|
|
[0x54,0x8d,0xb5,0x91], [0xc4,0x5d,0x05,0x71], [0x06,0xd4,0x6f,0x04], [0x50,0x15,0xff,0x60], |
613
|
|
|
|
|
|
|
[0x98,0xfb,0x24,0x19], [0xbd,0xe9,0x97,0xd6], [0x40,0x43,0xcc,0x89], [0xd9,0x9e,0x77,0x67], |
614
|
|
|
|
|
|
|
[0xe8,0x42,0xbd,0xb0], [0x89,0x8b,0x88,0x07], [0x19,0x5b,0x38,0xe7], [0xc8,0xee,0xdb,0x79], |
615
|
|
|
|
|
|
|
[0x7c,0x0a,0x47,0xa1], [0x42,0x0f,0xe9,0x7c], [0x84,0x1e,0xc9,0xf8], [0x00,0x00,0x00,0x00], |
616
|
|
|
|
|
|
|
[0x80,0x86,0x83,0x09], [0x2b,0xed,0x48,0x32], [0x11,0x70,0xac,0x1e], [0x5a,0x72,0x4e,0x6c], |
617
|
|
|
|
|
|
|
[0x0e,0xff,0xfb,0xfd], [0x85,0x38,0x56,0x0f], [0xae,0xd5,0x1e,0x3d], [0x2d,0x39,0x27,0x36], |
618
|
|
|
|
|
|
|
[0x0f,0xd9,0x64,0x0a], [0x5c,0xa6,0x21,0x68], [0x5b,0x54,0xd1,0x9b], [0x36,0x2e,0x3a,0x24], |
619
|
|
|
|
|
|
|
[0x0a,0x67,0xb1,0x0c], [0x57,0xe7,0x0f,0x93], [0xee,0x96,0xd2,0xb4], [0x9b,0x91,0x9e,0x1b], |
620
|
|
|
|
|
|
|
[0xc0,0xc5,0x4f,0x80], [0xdc,0x20,0xa2,0x61], [0x77,0x4b,0x69,0x5a], [0x12,0x1a,0x16,0x1c], |
621
|
|
|
|
|
|
|
[0x93,0xba,0x0a,0xe2], [0xa0,0x2a,0xe5,0xc0], [0x22,0xe0,0x43,0x3c], [0x1b,0x17,0x1d,0x12], |
622
|
|
|
|
|
|
|
[0x09,0x0d,0x0b,0x0e], [0x8b,0xc7,0xad,0xf2], [0xb6,0xa8,0xb9,0x2d], [0x1e,0xa9,0xc8,0x14], |
623
|
|
|
|
|
|
|
[0xf1,0x19,0x85,0x57], [0x75,0x07,0x4c,0xaf], [0x99,0xdd,0xbb,0xee], [0x7f,0x60,0xfd,0xa3], |
624
|
|
|
|
|
|
|
[0x01,0x26,0x9f,0xf7], [0x72,0xf5,0xbc,0x5c], [0x66,0x3b,0xc5,0x44], [0xfb,0x7e,0x34,0x5b], |
625
|
|
|
|
|
|
|
[0x43,0x29,0x76,0x8b], [0x23,0xc6,0xdc,0xcb], [0xed,0xfc,0x68,0xb6], [0xe4,0xf1,0x63,0xb8], |
626
|
|
|
|
|
|
|
[0x31,0xdc,0xca,0xd7], [0x63,0x85,0x10,0x42], [0x97,0x22,0x40,0x13], [0xc6,0x11,0x20,0x84], |
627
|
|
|
|
|
|
|
[0x4a,0x24,0x7d,0x85], [0xbb,0x3d,0xf8,0xd2], [0xf9,0x32,0x11,0xae], [0x29,0xa1,0x6d,0xc7], |
628
|
|
|
|
|
|
|
[0x9e,0x2f,0x4b,0x1d], [0xb2,0x30,0xf3,0xdc], [0x86,0x52,0xec,0x0d], [0xc1,0xe3,0xd0,0x77], |
629
|
|
|
|
|
|
|
[0xb3,0x16,0x6c,0x2b], [0x70,0xb9,0x99,0xa9], [0x94,0x48,0xfa,0x11], [0xe9,0x64,0x22,0x47], |
630
|
|
|
|
|
|
|
[0xfc,0x8c,0xc4,0xa8], [0xf0,0x3f,0x1a,0xa0], [0x7d,0x2c,0xd8,0x56], [0x33,0x90,0xef,0x22], |
631
|
|
|
|
|
|
|
[0x49,0x4e,0xc7,0x87], [0x38,0xd1,0xc1,0xd9], [0xca,0xa2,0xfe,0x8c], [0xd4,0x0b,0x36,0x98], |
632
|
|
|
|
|
|
|
[0xf5,0x81,0xcf,0xa6], [0x7a,0xde,0x28,0xa5], [0xb7,0x8e,0x26,0xda], [0xad,0xbf,0xa4,0x3f], |
633
|
|
|
|
|
|
|
[0x3a,0x9d,0xe4,0x2c], [0x78,0x92,0x0d,0x50], [0x5f,0xcc,0x9b,0x6a], [0x7e,0x46,0x62,0x54], |
634
|
|
|
|
|
|
|
[0x8d,0x13,0xc2,0xf6], [0xd8,0xb8,0xe8,0x90], [0x39,0xf7,0x5e,0x2e], [0xc3,0xaf,0xf5,0x82], |
635
|
|
|
|
|
|
|
[0x5d,0x80,0xbe,0x9f], [0xd0,0x93,0x7c,0x69], [0xd5,0x2d,0xa9,0x6f], [0x25,0x12,0xb3,0xcf], |
636
|
|
|
|
|
|
|
[0xac,0x99,0x3b,0xc8], [0x18,0x7d,0xa7,0x10], [0x9c,0x63,0x6e,0xe8], [0x3b,0xbb,0x7b,0xdb], |
637
|
|
|
|
|
|
|
[0x26,0x78,0x09,0xcd], [0x59,0x18,0xf4,0x6e], [0x9a,0xb7,0x01,0xec], [0x4f,0x9a,0xa8,0x83], |
638
|
|
|
|
|
|
|
[0x95,0x6e,0x65,0xe6], [0xff,0xe6,0x7e,0xaa], [0xbc,0xcf,0x08,0x21], [0x15,0xe8,0xe6,0xef], |
639
|
|
|
|
|
|
|
[0xe7,0x9b,0xd9,0xba], [0x6f,0x36,0xce,0x4a], [0x9f,0x09,0xd4,0xea], [0xb0,0x7c,0xd6,0x29], |
640
|
|
|
|
|
|
|
[0xa4,0xb2,0xaf,0x31], [0x3f,0x23,0x31,0x2a], [0xa5,0x94,0x30,0xc6], [0xa2,0x66,0xc0,0x35], |
641
|
|
|
|
|
|
|
[0x4e,0xbc,0x37,0x74], [0x82,0xca,0xa6,0xfc], [0x90,0xd0,0xb0,0xe0], [0xa7,0xd8,0x15,0x33], |
642
|
|
|
|
|
|
|
[0x04,0x98,0x4a,0xf1], [0xec,0xda,0xf7,0x41], [0xcd,0x50,0x0e,0x7f], [0x91,0xf6,0x2f,0x17], |
643
|
|
|
|
|
|
|
[0x4d,0xd6,0x8d,0x76], [0xef,0xb0,0x4d,0x43], [0xaa,0x4d,0x54,0xcc], [0x96,0x04,0xdf,0xe4], |
644
|
|
|
|
|
|
|
[0xd1,0xb5,0xe3,0x9e], [0x6a,0x88,0x1b,0x4c], [0x2c,0x1f,0xb8,0xc1], [0x65,0x51,0x7f,0x46], |
645
|
|
|
|
|
|
|
[0x5e,0xea,0x04,0x9d], [0x8c,0x35,0x5d,0x01], [0x87,0x74,0x73,0xfa], [0x0b,0x41,0x2e,0xfb], |
646
|
|
|
|
|
|
|
[0x67,0x1d,0x5a,0xb3], [0xdb,0xd2,0x52,0x92], [0x10,0x56,0x33,0xe9], [0xd6,0x47,0x13,0x6d], |
647
|
|
|
|
|
|
|
[0xd7,0x61,0x8c,0x9a], [0xa1,0x0c,0x7a,0x37], [0xf8,0x14,0x8e,0x59], [0x13,0x3c,0x89,0xeb], |
648
|
|
|
|
|
|
|
[0xa9,0x27,0xee,0xce], [0x61,0xc9,0x35,0xb7], [0x1c,0xe5,0xed,0xe1], [0x47,0xb1,0x3c,0x7a], |
649
|
|
|
|
|
|
|
[0xd2,0xdf,0x59,0x9c], [0xf2,0x73,0x3f,0x55], [0x14,0xce,0x79,0x18], [0xc7,0x37,0xbf,0x73], |
650
|
|
|
|
|
|
|
[0xf7,0xcd,0xea,0x53], [0xfd,0xaa,0x5b,0x5f], [0x3d,0x6f,0x14,0xdf], [0x44,0xdb,0x86,0x78], |
651
|
|
|
|
|
|
|
[0xaf,0xf3,0x81,0xca], [0x68,0xc4,0x3e,0xb9], [0x24,0x34,0x2c,0x38], [0xa3,0x40,0x5f,0xc2], |
652
|
|
|
|
|
|
|
[0x1d,0xc3,0x72,0x16], [0xe2,0x25,0x0c,0xbc], [0x3c,0x49,0x8b,0x28], [0x0d,0x95,0x41,0xff], |
653
|
|
|
|
|
|
|
[0xa8,0x01,0x71,0x39], [0x0c,0xb3,0xde,0x08], [0xb4,0xe4,0x9c,0xd8], [0x56,0xc1,0x90,0x64], |
654
|
|
|
|
|
|
|
[0xcb,0x84,0x61,0x7b], [0x32,0xb6,0x70,0xd5], [0x6c,0x5c,0x74,0x48], [0xb8,0x57,0x42,0xd0] |
655
|
|
|
|
|
|
|
); |
656
|
|
|
|
|
|
|
|
657
|
|
|
|
|
|
|
my @S5 = ( |
658
|
|
|
|
|
|
|
0x52,0x09,0x6a,0xd5, |
659
|
|
|
|
|
|
|
0x30,0x36,0xa5,0x38, |
660
|
|
|
|
|
|
|
0xbf,0x40,0xa3,0x9e, |
661
|
|
|
|
|
|
|
0x81,0xf3,0xd7,0xfb, |
662
|
|
|
|
|
|
|
0x7c,0xe3,0x39,0x82, |
663
|
|
|
|
|
|
|
0x9b,0x2f,0xff,0x87, |
664
|
|
|
|
|
|
|
0x34,0x8e,0x43,0x44, |
665
|
|
|
|
|
|
|
0xc4,0xde,0xe9,0xcb, |
666
|
|
|
|
|
|
|
0x54,0x7b,0x94,0x32, |
667
|
|
|
|
|
|
|
0xa6,0xc2,0x23,0x3d, |
668
|
|
|
|
|
|
|
0xee,0x4c,0x95,0x0b, |
669
|
|
|
|
|
|
|
0x42,0xfa,0xc3,0x4e, |
670
|
|
|
|
|
|
|
0x08,0x2e,0xa1,0x66, |
671
|
|
|
|
|
|
|
0x28,0xd9,0x24,0xb2, |
672
|
|
|
|
|
|
|
0x76,0x5b,0xa2,0x49, |
673
|
|
|
|
|
|
|
0x6d,0x8b,0xd1,0x25, |
674
|
|
|
|
|
|
|
0x72,0xf8,0xf6,0x64, |
675
|
|
|
|
|
|
|
0x86,0x68,0x98,0x16, |
676
|
|
|
|
|
|
|
0xd4,0xa4,0x5c,0xcc, |
677
|
|
|
|
|
|
|
0x5d,0x65,0xb6,0x92, |
678
|
|
|
|
|
|
|
0x6c,0x70,0x48,0x50, |
679
|
|
|
|
|
|
|
0xfd,0xed,0xb9,0xda, |
680
|
|
|
|
|
|
|
0x5e,0x15,0x46,0x57, |
681
|
|
|
|
|
|
|
0xa7,0x8d,0x9d,0x84, |
682
|
|
|
|
|
|
|
0x90,0xd8,0xab,0x00, |
683
|
|
|
|
|
|
|
0x8c,0xbc,0xd3,0x0a, |
684
|
|
|
|
|
|
|
0xf7,0xe4,0x58,0x05, |
685
|
|
|
|
|
|
|
0xb8,0xb3,0x45,0x06, |
686
|
|
|
|
|
|
|
0xd0,0x2c,0x1e,0x8f, |
687
|
|
|
|
|
|
|
0xca,0x3f,0x0f,0x02, |
688
|
|
|
|
|
|
|
0xc1,0xaf,0xbd,0x03, |
689
|
|
|
|
|
|
|
0x01,0x13,0x8a,0x6b, |
690
|
|
|
|
|
|
|
0x3a,0x91,0x11,0x41, |
691
|
|
|
|
|
|
|
0x4f,0x67,0xdc,0xea, |
692
|
|
|
|
|
|
|
0x97,0xf2,0xcf,0xce, |
693
|
|
|
|
|
|
|
0xf0,0xb4,0xe6,0x73, |
694
|
|
|
|
|
|
|
0x96,0xac,0x74,0x22, |
695
|
|
|
|
|
|
|
0xe7,0xad,0x35,0x85, |
696
|
|
|
|
|
|
|
0xe2,0xf9,0x37,0xe8, |
697
|
|
|
|
|
|
|
0x1c,0x75,0xdf,0x6e, |
698
|
|
|
|
|
|
|
0x47,0xf1,0x1a,0x71, |
699
|
|
|
|
|
|
|
0x1d,0x29,0xc5,0x89, |
700
|
|
|
|
|
|
|
0x6f,0xb7,0x62,0x0e, |
701
|
|
|
|
|
|
|
0xaa,0x18,0xbe,0x1b, |
702
|
|
|
|
|
|
|
0xfc,0x56,0x3e,0x4b, |
703
|
|
|
|
|
|
|
0xc6,0xd2,0x79,0x20, |
704
|
|
|
|
|
|
|
0x9a,0xdb,0xc0,0xfe, |
705
|
|
|
|
|
|
|
0x78,0xcd,0x5a,0xf4, |
706
|
|
|
|
|
|
|
0x1f,0xdd,0xa8,0x33, |
707
|
|
|
|
|
|
|
0x88,0x07,0xc7,0x31, |
708
|
|
|
|
|
|
|
0xb1,0x12,0x10,0x59, |
709
|
|
|
|
|
|
|
0x27,0x80,0xec,0x5f, |
710
|
|
|
|
|
|
|
0x60,0x51,0x7f,0xa9, |
711
|
|
|
|
|
|
|
0x19,0xb5,0x4a,0x0d, |
712
|
|
|
|
|
|
|
0x2d,0xe5,0x7a,0x9f, |
713
|
|
|
|
|
|
|
0x93,0xc9,0x9c,0xef, |
714
|
|
|
|
|
|
|
0xa0,0xe0,0x3b,0x4d, |
715
|
|
|
|
|
|
|
0xae,0x2a,0xf5,0xb0, |
716
|
|
|
|
|
|
|
0xc8,0xeb,0xbb,0x3c, |
717
|
|
|
|
|
|
|
0x83,0x53,0x99,0x61, |
718
|
|
|
|
|
|
|
0x17,0x2b,0x04,0x7e, |
719
|
|
|
|
|
|
|
0xba,0x77,0xd6,0x26, |
720
|
|
|
|
|
|
|
0xe1,0x69,0x14,0x63, |
721
|
|
|
|
|
|
|
0x55,0x21,0x0c,0x7d |
722
|
|
|
|
|
|
|
); |
723
|
|
|
|
|
|
|
|
724
|
|
|
|
|
|
|
my @U1 = ( |
725
|
|
|
|
|
|
|
[0x00,0x00,0x00,0x00], [0x0e,0x09,0x0d,0x0b], [0x1c,0x12,0x1a,0x16], [0x12,0x1b,0x17,0x1d], |
726
|
|
|
|
|
|
|
[0x38,0x24,0x34,0x2c], [0x36,0x2d,0x39,0x27], [0x24,0x36,0x2e,0x3a], [0x2a,0x3f,0x23,0x31], |
727
|
|
|
|
|
|
|
[0x70,0x48,0x68,0x58], [0x7e,0x41,0x65,0x53], [0x6c,0x5a,0x72,0x4e], [0x62,0x53,0x7f,0x45], |
728
|
|
|
|
|
|
|
[0x48,0x6c,0x5c,0x74], [0x46,0x65,0x51,0x7f], [0x54,0x7e,0x46,0x62], [0x5a,0x77,0x4b,0x69], |
729
|
|
|
|
|
|
|
[0xe0,0x90,0xd0,0xb0], [0xee,0x99,0xdd,0xbb], [0xfc,0x82,0xca,0xa6], [0xf2,0x8b,0xc7,0xad], |
730
|
|
|
|
|
|
|
[0xd8,0xb4,0xe4,0x9c], [0xd6,0xbd,0xe9,0x97], [0xc4,0xa6,0xfe,0x8a], [0xca,0xaf,0xf3,0x81], |
731
|
|
|
|
|
|
|
[0x90,0xd8,0xb8,0xe8], [0x9e,0xd1,0xb5,0xe3], [0x8c,0xca,0xa2,0xfe], [0x82,0xc3,0xaf,0xf5], |
732
|
|
|
|
|
|
|
[0xa8,0xfc,0x8c,0xc4], [0xa6,0xf5,0x81,0xcf], [0xb4,0xee,0x96,0xd2], [0xba,0xe7,0x9b,0xd9], |
733
|
|
|
|
|
|
|
[0xdb,0x3b,0xbb,0x7b], [0xd5,0x32,0xb6,0x70], [0xc7,0x29,0xa1,0x6d], [0xc9,0x20,0xac,0x66], |
734
|
|
|
|
|
|
|
[0xe3,0x1f,0x8f,0x57], [0xed,0x16,0x82,0x5c], [0xff,0x0d,0x95,0x41], [0xf1,0x04,0x98,0x4a], |
735
|
|
|
|
|
|
|
[0xab,0x73,0xd3,0x23], [0xa5,0x7a,0xde,0x28], [0xb7,0x61,0xc9,0x35], [0xb9,0x68,0xc4,0x3e], |
736
|
|
|
|
|
|
|
[0x93,0x57,0xe7,0x0f], [0x9d,0x5e,0xea,0x04], [0x8f,0x45,0xfd,0x19], [0x81,0x4c,0xf0,0x12], |
737
|
|
|
|
|
|
|
[0x3b,0xab,0x6b,0xcb], [0x35,0xa2,0x66,0xc0], [0x27,0xb9,0x71,0xdd], [0x29,0xb0,0x7c,0xd6], |
738
|
|
|
|
|
|
|
[0x03,0x8f,0x5f,0xe7], [0x0d,0x86,0x52,0xec], [0x1f,0x9d,0x45,0xf1], [0x11,0x94,0x48,0xfa], |
739
|
|
|
|
|
|
|
[0x4b,0xe3,0x03,0x93], [0x45,0xea,0x0e,0x98], [0x57,0xf1,0x19,0x85], [0x59,0xf8,0x14,0x8e], |
740
|
|
|
|
|
|
|
[0x73,0xc7,0x37,0xbf], [0x7d,0xce,0x3a,0xb4], [0x6f,0xd5,0x2d,0xa9], [0x61,0xdc,0x20,0xa2], |
741
|
|
|
|
|
|
|
[0xad,0x76,0x6d,0xf6], [0xa3,0x7f,0x60,0xfd], [0xb1,0x64,0x77,0xe0], [0xbf,0x6d,0x7a,0xeb], |
742
|
|
|
|
|
|
|
[0x95,0x52,0x59,0xda], [0x9b,0x5b,0x54,0xd1], [0x89,0x40,0x43,0xcc], [0x87,0x49,0x4e,0xc7], |
743
|
|
|
|
|
|
|
[0xdd,0x3e,0x05,0xae], [0xd3,0x37,0x08,0xa5], [0xc1,0x2c,0x1f,0xb8], [0xcf,0x25,0x12,0xb3], |
744
|
|
|
|
|
|
|
[0xe5,0x1a,0x31,0x82], [0xeb,0x13,0x3c,0x89], [0xf9,0x08,0x2b,0x94], [0xf7,0x01,0x26,0x9f], |
745
|
|
|
|
|
|
|
[0x4d,0xe6,0xbd,0x46], [0x43,0xef,0xb0,0x4d], [0x51,0xf4,0xa7,0x50], [0x5f,0xfd,0xaa,0x5b], |
746
|
|
|
|
|
|
|
[0x75,0xc2,0x89,0x6a], [0x7b,0xcb,0x84,0x61], [0x69,0xd0,0x93,0x7c], [0x67,0xd9,0x9e,0x77], |
747
|
|
|
|
|
|
|
[0x3d,0xae,0xd5,0x1e], [0x33,0xa7,0xd8,0x15], [0x21,0xbc,0xcf,0x08], [0x2f,0xb5,0xc2,0x03], |
748
|
|
|
|
|
|
|
[0x05,0x8a,0xe1,0x32], [0x0b,0x83,0xec,0x39], [0x19,0x98,0xfb,0x24], [0x17,0x91,0xf6,0x2f], |
749
|
|
|
|
|
|
|
[0x76,0x4d,0xd6,0x8d], [0x78,0x44,0xdb,0x86], [0x6a,0x5f,0xcc,0x9b], [0x64,0x56,0xc1,0x90], |
750
|
|
|
|
|
|
|
[0x4e,0x69,0xe2,0xa1], [0x40,0x60,0xef,0xaa], [0x52,0x7b,0xf8,0xb7], [0x5c,0x72,0xf5,0xbc], |
751
|
|
|
|
|
|
|
[0x06,0x05,0xbe,0xd5], [0x08,0x0c,0xb3,0xde], [0x1a,0x17,0xa4,0xc3], [0x14,0x1e,0xa9,0xc8], |
752
|
|
|
|
|
|
|
[0x3e,0x21,0x8a,0xf9], [0x30,0x28,0x87,0xf2], [0x22,0x33,0x90,0xef], [0x2c,0x3a,0x9d,0xe4], |
753
|
|
|
|
|
|
|
[0x96,0xdd,0x06,0x3d], [0x98,0xd4,0x0b,0x36], [0x8a,0xcf,0x1c,0x2b], [0x84,0xc6,0x11,0x20], |
754
|
|
|
|
|
|
|
[0xae,0xf9,0x32,0x11], [0xa0,0xf0,0x3f,0x1a], [0xb2,0xeb,0x28,0x07], [0xbc,0xe2,0x25,0x0c], |
755
|
|
|
|
|
|
|
[0xe6,0x95,0x6e,0x65], [0xe8,0x9c,0x63,0x6e], [0xfa,0x87,0x74,0x73], [0xf4,0x8e,0x79,0x78], |
756
|
|
|
|
|
|
|
[0xde,0xb1,0x5a,0x49], [0xd0,0xb8,0x57,0x42], [0xc2,0xa3,0x40,0x5f], [0xcc,0xaa,0x4d,0x54], |
757
|
|
|
|
|
|
|
[0x41,0xec,0xda,0xf7], [0x4f,0xe5,0xd7,0xfc], [0x5d,0xfe,0xc0,0xe1], [0x53,0xf7,0xcd,0xea], |
758
|
|
|
|
|
|
|
[0x79,0xc8,0xee,0xdb], [0x77,0xc1,0xe3,0xd0], [0x65,0xda,0xf4,0xcd], [0x6b,0xd3,0xf9,0xc6], |
759
|
|
|
|
|
|
|
[0x31,0xa4,0xb2,0xaf], [0x3f,0xad,0xbf,0xa4], [0x2d,0xb6,0xa8,0xb9], [0x23,0xbf,0xa5,0xb2], |
760
|
|
|
|
|
|
|
[0x09,0x80,0x86,0x83], [0x07,0x89,0x8b,0x88], [0x15,0x92,0x9c,0x95], [0x1b,0x9b,0x91,0x9e], |
761
|
|
|
|
|
|
|
[0xa1,0x7c,0x0a,0x47], [0xaf,0x75,0x07,0x4c], [0xbd,0x6e,0x10,0x51], [0xb3,0x67,0x1d,0x5a], |
762
|
|
|
|
|
|
|
[0x99,0x58,0x3e,0x6b], [0x97,0x51,0x33,0x60], [0x85,0x4a,0x24,0x7d], [0x8b,0x43,0x29,0x76], |
763
|
|
|
|
|
|
|
[0xd1,0x34,0x62,0x1f], [0xdf,0x3d,0x6f,0x14], [0xcd,0x26,0x78,0x09], [0xc3,0x2f,0x75,0x02], |
764
|
|
|
|
|
|
|
[0xe9,0x10,0x56,0x33], [0xe7,0x19,0x5b,0x38], [0xf5,0x02,0x4c,0x25], [0xfb,0x0b,0x41,0x2e], |
765
|
|
|
|
|
|
|
[0x9a,0xd7,0x61,0x8c], [0x94,0xde,0x6c,0x87], [0x86,0xc5,0x7b,0x9a], [0x88,0xcc,0x76,0x91], |
766
|
|
|
|
|
|
|
[0xa2,0xf3,0x55,0xa0], [0xac,0xfa,0x58,0xab], [0xbe,0xe1,0x4f,0xb6], [0xb0,0xe8,0x42,0xbd], |
767
|
|
|
|
|
|
|
[0xea,0x9f,0x09,0xd4], [0xe4,0x96,0x04,0xdf], [0xf6,0x8d,0x13,0xc2], [0xf8,0x84,0x1e,0xc9], |
768
|
|
|
|
|
|
|
[0xd2,0xbb,0x3d,0xf8], [0xdc,0xb2,0x30,0xf3], [0xce,0xa9,0x27,0xee], [0xc0,0xa0,0x2a,0xe5], |
769
|
|
|
|
|
|
|
[0x7a,0x47,0xb1,0x3c], [0x74,0x4e,0xbc,0x37], [0x66,0x55,0xab,0x2a], [0x68,0x5c,0xa6,0x21], |
770
|
|
|
|
|
|
|
[0x42,0x63,0x85,0x10], [0x4c,0x6a,0x88,0x1b], [0x5e,0x71,0x9f,0x06], [0x50,0x78,0x92,0x0d], |
771
|
|
|
|
|
|
|
[0x0a,0x0f,0xd9,0x64], [0x04,0x06,0xd4,0x6f], [0x16,0x1d,0xc3,0x72], [0x18,0x14,0xce,0x79], |
772
|
|
|
|
|
|
|
[0x32,0x2b,0xed,0x48], [0x3c,0x22,0xe0,0x43], [0x2e,0x39,0xf7,0x5e], [0x20,0x30,0xfa,0x55], |
773
|
|
|
|
|
|
|
[0xec,0x9a,0xb7,0x01], [0xe2,0x93,0xba,0x0a], [0xf0,0x88,0xad,0x17], [0xfe,0x81,0xa0,0x1c], |
774
|
|
|
|
|
|
|
[0xd4,0xbe,0x83,0x2d], [0xda,0xb7,0x8e,0x26], [0xc8,0xac,0x99,0x3b], [0xc6,0xa5,0x94,0x30], |
775
|
|
|
|
|
|
|
[0x9c,0xd2,0xdf,0x59], [0x92,0xdb,0xd2,0x52], [0x80,0xc0,0xc5,0x4f], [0x8e,0xc9,0xc8,0x44], |
776
|
|
|
|
|
|
|
[0xa4,0xf6,0xeb,0x75], [0xaa,0xff,0xe6,0x7e], [0xb8,0xe4,0xf1,0x63], [0xb6,0xed,0xfc,0x68], |
777
|
|
|
|
|
|
|
[0x0c,0x0a,0x67,0xb1], [0x02,0x03,0x6a,0xba], [0x10,0x18,0x7d,0xa7], [0x1e,0x11,0x70,0xac], |
778
|
|
|
|
|
|
|
[0x34,0x2e,0x53,0x9d], [0x3a,0x27,0x5e,0x96], [0x28,0x3c,0x49,0x8b], [0x26,0x35,0x44,0x80], |
779
|
|
|
|
|
|
|
[0x7c,0x42,0x0f,0xe9], [0x72,0x4b,0x02,0xe2], [0x60,0x50,0x15,0xff], [0x6e,0x59,0x18,0xf4], |
780
|
|
|
|
|
|
|
[0x44,0x66,0x3b,0xc5], [0x4a,0x6f,0x36,0xce], [0x58,0x74,0x21,0xd3], [0x56,0x7d,0x2c,0xd8], |
781
|
|
|
|
|
|
|
[0x37,0xa1,0x0c,0x7a], [0x39,0xa8,0x01,0x71], [0x2b,0xb3,0x16,0x6c], [0x25,0xba,0x1b,0x67], |
782
|
|
|
|
|
|
|
[0x0f,0x85,0x38,0x56], [0x01,0x8c,0x35,0x5d], [0x13,0x97,0x22,0x40], [0x1d,0x9e,0x2f,0x4b], |
783
|
|
|
|
|
|
|
[0x47,0xe9,0x64,0x22], [0x49,0xe0,0x69,0x29], [0x5b,0xfb,0x7e,0x34], [0x55,0xf2,0x73,0x3f], |
784
|
|
|
|
|
|
|
[0x7f,0xcd,0x50,0x0e], [0x71,0xc4,0x5d,0x05], [0x63,0xdf,0x4a,0x18], [0x6d,0xd6,0x47,0x13], |
785
|
|
|
|
|
|
|
[0xd7,0x31,0xdc,0xca], [0xd9,0x38,0xd1,0xc1], [0xcb,0x23,0xc6,0xdc], [0xc5,0x2a,0xcb,0xd7], |
786
|
|
|
|
|
|
|
[0xef,0x15,0xe8,0xe6], [0xe1,0x1c,0xe5,0xed], [0xf3,0x07,0xf2,0xf0], [0xfd,0x0e,0xff,0xfb], |
787
|
|
|
|
|
|
|
[0xa7,0x79,0xb4,0x92], [0xa9,0x70,0xb9,0x99], [0xbb,0x6b,0xae,0x84], [0xb5,0x62,0xa3,0x8f], |
788
|
|
|
|
|
|
|
[0x9f,0x5d,0x80,0xbe], [0x91,0x54,0x8d,0xb5], [0x83,0x4f,0x9a,0xa8], [0x8d,0x46,0x97,0xa3] |
789
|
|
|
|
|
|
|
); |
790
|
|
|
|
|
|
|
|
791
|
|
|
|
|
|
|
my @U2 = ( |
792
|
|
|
|
|
|
|
[0x00,0x00,0x00,0x00], [0x0b,0x0e,0x09,0x0d], [0x16,0x1c,0x12,0x1a], [0x1d,0x12,0x1b,0x17], |
793
|
|
|
|
|
|
|
[0x2c,0x38,0x24,0x34], [0x27,0x36,0x2d,0x39], [0x3a,0x24,0x36,0x2e], [0x31,0x2a,0x3f,0x23], |
794
|
|
|
|
|
|
|
[0x58,0x70,0x48,0x68], [0x53,0x7e,0x41,0x65], [0x4e,0x6c,0x5a,0x72], [0x45,0x62,0x53,0x7f], |
795
|
|
|
|
|
|
|
[0x74,0x48,0x6c,0x5c], [0x7f,0x46,0x65,0x51], [0x62,0x54,0x7e,0x46], [0x69,0x5a,0x77,0x4b], |
796
|
|
|
|
|
|
|
[0xb0,0xe0,0x90,0xd0], [0xbb,0xee,0x99,0xdd], [0xa6,0xfc,0x82,0xca], [0xad,0xf2,0x8b,0xc7], |
797
|
|
|
|
|
|
|
[0x9c,0xd8,0xb4,0xe4], [0x97,0xd6,0xbd,0xe9], [0x8a,0xc4,0xa6,0xfe], [0x81,0xca,0xaf,0xf3], |
798
|
|
|
|
|
|
|
[0xe8,0x90,0xd8,0xb8], [0xe3,0x9e,0xd1,0xb5], [0xfe,0x8c,0xca,0xa2], [0xf5,0x82,0xc3,0xaf], |
799
|
|
|
|
|
|
|
[0xc4,0xa8,0xfc,0x8c], [0xcf,0xa6,0xf5,0x81], [0xd2,0xb4,0xee,0x96], [0xd9,0xba,0xe7,0x9b], |
800
|
|
|
|
|
|
|
[0x7b,0xdb,0x3b,0xbb], [0x70,0xd5,0x32,0xb6], [0x6d,0xc7,0x29,0xa1], [0x66,0xc9,0x20,0xac], |
801
|
|
|
|
|
|
|
[0x57,0xe3,0x1f,0x8f], [0x5c,0xed,0x16,0x82], [0x41,0xff,0x0d,0x95], [0x4a,0xf1,0x04,0x98], |
802
|
|
|
|
|
|
|
[0x23,0xab,0x73,0xd3], [0x28,0xa5,0x7a,0xde], [0x35,0xb7,0x61,0xc9], [0x3e,0xb9,0x68,0xc4], |
803
|
|
|
|
|
|
|
[0x0f,0x93,0x57,0xe7], [0x04,0x9d,0x5e,0xea], [0x19,0x8f,0x45,0xfd], [0x12,0x81,0x4c,0xf0], |
804
|
|
|
|
|
|
|
[0xcb,0x3b,0xab,0x6b], [0xc0,0x35,0xa2,0x66], [0xdd,0x27,0xb9,0x71], [0xd6,0x29,0xb0,0x7c], |
805
|
|
|
|
|
|
|
[0xe7,0x03,0x8f,0x5f], [0xec,0x0d,0x86,0x52], [0xf1,0x1f,0x9d,0x45], [0xfa,0x11,0x94,0x48], |
806
|
|
|
|
|
|
|
[0x93,0x4b,0xe3,0x03], [0x98,0x45,0xea,0x0e], [0x85,0x57,0xf1,0x19], [0x8e,0x59,0xf8,0x14], |
807
|
|
|
|
|
|
|
[0xbf,0x73,0xc7,0x37], [0xb4,0x7d,0xce,0x3a], [0xa9,0x6f,0xd5,0x2d], [0xa2,0x61,0xdc,0x20], |
808
|
|
|
|
|
|
|
[0xf6,0xad,0x76,0x6d], [0xfd,0xa3,0x7f,0x60], [0xe0,0xb1,0x64,0x77], [0xeb,0xbf,0x6d,0x7a], |
809
|
|
|
|
|
|
|
[0xda,0x95,0x52,0x59], [0xd1,0x9b,0x5b,0x54], [0xcc,0x89,0x40,0x43], [0xc7,0x87,0x49,0x4e], |
810
|
|
|
|
|
|
|
[0xae,0xdd,0x3e,0x05], [0xa5,0xd3,0x37,0x08], [0xb8,0xc1,0x2c,0x1f], [0xb3,0xcf,0x25,0x12], |
811
|
|
|
|
|
|
|
[0x82,0xe5,0x1a,0x31], [0x89,0xeb,0x13,0x3c], [0x94,0xf9,0x08,0x2b], [0x9f,0xf7,0x01,0x26], |
812
|
|
|
|
|
|
|
[0x46,0x4d,0xe6,0xbd], [0x4d,0x43,0xef,0xb0], [0x50,0x51,0xf4,0xa7], [0x5b,0x5f,0xfd,0xaa], |
813
|
|
|
|
|
|
|
[0x6a,0x75,0xc2,0x89], [0x61,0x7b,0xcb,0x84], [0x7c,0x69,0xd0,0x93], [0x77,0x67,0xd9,0x9e], |
814
|
|
|
|
|
|
|
[0x1e,0x3d,0xae,0xd5], [0x15,0x33,0xa7,0xd8], [0x08,0x21,0xbc,0xcf], [0x03,0x2f,0xb5,0xc2], |
815
|
|
|
|
|
|
|
[0x32,0x05,0x8a,0xe1], [0x39,0x0b,0x83,0xec], [0x24,0x19,0x98,0xfb], [0x2f,0x17,0x91,0xf6], |
816
|
|
|
|
|
|
|
[0x8d,0x76,0x4d,0xd6], [0x86,0x78,0x44,0xdb], [0x9b,0x6a,0x5f,0xcc], [0x90,0x64,0x56,0xc1], |
817
|
|
|
|
|
|
|
[0xa1,0x4e,0x69,0xe2], [0xaa,0x40,0x60,0xef], [0xb7,0x52,0x7b,0xf8], [0xbc,0x5c,0x72,0xf5], |
818
|
|
|
|
|
|
|
[0xd5,0x06,0x05,0xbe], [0xde,0x08,0x0c,0xb3], [0xc3,0x1a,0x17,0xa4], [0xc8,0x14,0x1e,0xa9], |
819
|
|
|
|
|
|
|
[0xf9,0x3e,0x21,0x8a], [0xf2,0x30,0x28,0x87], [0xef,0x22,0x33,0x90], [0xe4,0x2c,0x3a,0x9d], |
820
|
|
|
|
|
|
|
[0x3d,0x96,0xdd,0x06], [0x36,0x98,0xd4,0x0b], [0x2b,0x8a,0xcf,0x1c], [0x20,0x84,0xc6,0x11], |
821
|
|
|
|
|
|
|
[0x11,0xae,0xf9,0x32], [0x1a,0xa0,0xf0,0x3f], [0x07,0xb2,0xeb,0x28], [0x0c,0xbc,0xe2,0x25], |
822
|
|
|
|
|
|
|
[0x65,0xe6,0x95,0x6e], [0x6e,0xe8,0x9c,0x63], [0x73,0xfa,0x87,0x74], [0x78,0xf4,0x8e,0x79], |
823
|
|
|
|
|
|
|
[0x49,0xde,0xb1,0x5a], [0x42,0xd0,0xb8,0x57], [0x5f,0xc2,0xa3,0x40], [0x54,0xcc,0xaa,0x4d], |
824
|
|
|
|
|
|
|
[0xf7,0x41,0xec,0xda], [0xfc,0x4f,0xe5,0xd7], [0xe1,0x5d,0xfe,0xc0], [0xea,0x53,0xf7,0xcd], |
825
|
|
|
|
|
|
|
[0xdb,0x79,0xc8,0xee], [0xd0,0x77,0xc1,0xe3], [0xcd,0x65,0xda,0xf4], [0xc6,0x6b,0xd3,0xf9], |
826
|
|
|
|
|
|
|
[0xaf,0x31,0xa4,0xb2], [0xa4,0x3f,0xad,0xbf], [0xb9,0x2d,0xb6,0xa8], [0xb2,0x23,0xbf,0xa5], |
827
|
|
|
|
|
|
|
[0x83,0x09,0x80,0x86], [0x88,0x07,0x89,0x8b], [0x95,0x15,0x92,0x9c], [0x9e,0x1b,0x9b,0x91], |
828
|
|
|
|
|
|
|
[0x47,0xa1,0x7c,0x0a], [0x4c,0xaf,0x75,0x07], [0x51,0xbd,0x6e,0x10], [0x5a,0xb3,0x67,0x1d], |
829
|
|
|
|
|
|
|
[0x6b,0x99,0x58,0x3e], [0x60,0x97,0x51,0x33], [0x7d,0x85,0x4a,0x24], [0x76,0x8b,0x43,0x29], |
830
|
|
|
|
|
|
|
[0x1f,0xd1,0x34,0x62], [0x14,0xdf,0x3d,0x6f], [0x09,0xcd,0x26,0x78], [0x02,0xc3,0x2f,0x75], |
831
|
|
|
|
|
|
|
[0x33,0xe9,0x10,0x56], [0x38,0xe7,0x19,0x5b], [0x25,0xf5,0x02,0x4c], [0x2e,0xfb,0x0b,0x41], |
832
|
|
|
|
|
|
|
[0x8c,0x9a,0xd7,0x61], [0x87,0x94,0xde,0x6c], [0x9a,0x86,0xc5,0x7b], [0x91,0x88,0xcc,0x76], |
833
|
|
|
|
|
|
|
[0xa0,0xa2,0xf3,0x55], [0xab,0xac,0xfa,0x58], [0xb6,0xbe,0xe1,0x4f], [0xbd,0xb0,0xe8,0x42], |
834
|
|
|
|
|
|
|
[0xd4,0xea,0x9f,0x09], [0xdf,0xe4,0x96,0x04], [0xc2,0xf6,0x8d,0x13], [0xc9,0xf8,0x84,0x1e], |
835
|
|
|
|
|
|
|
[0xf8,0xd2,0xbb,0x3d], [0xf3,0xdc,0xb2,0x30], [0xee,0xce,0xa9,0x27], [0xe5,0xc0,0xa0,0x2a], |
836
|
|
|
|
|
|
|
[0x3c,0x7a,0x47,0xb1], [0x37,0x74,0x4e,0xbc], [0x2a,0x66,0x55,0xab], [0x21,0x68,0x5c,0xa6], |
837
|
|
|
|
|
|
|
[0x10,0x42,0x63,0x85], [0x1b,0x4c,0x6a,0x88], [0x06,0x5e,0x71,0x9f], [0x0d,0x50,0x78,0x92], |
838
|
|
|
|
|
|
|
[0x64,0x0a,0x0f,0xd9], [0x6f,0x04,0x06,0xd4], [0x72,0x16,0x1d,0xc3], [0x79,0x18,0x14,0xce], |
839
|
|
|
|
|
|
|
[0x48,0x32,0x2b,0xed], [0x43,0x3c,0x22,0xe0], [0x5e,0x2e,0x39,0xf7], [0x55,0x20,0x30,0xfa], |
840
|
|
|
|
|
|
|
[0x01,0xec,0x9a,0xb7], [0x0a,0xe2,0x93,0xba], [0x17,0xf0,0x88,0xad], [0x1c,0xfe,0x81,0xa0], |
841
|
|
|
|
|
|
|
[0x2d,0xd4,0xbe,0x83], [0x26,0xda,0xb7,0x8e], [0x3b,0xc8,0xac,0x99], [0x30,0xc6,0xa5,0x94], |
842
|
|
|
|
|
|
|
[0x59,0x9c,0xd2,0xdf], [0x52,0x92,0xdb,0xd2], [0x4f,0x80,0xc0,0xc5], [0x44,0x8e,0xc9,0xc8], |
843
|
|
|
|
|
|
|
[0x75,0xa4,0xf6,0xeb], [0x7e,0xaa,0xff,0xe6], [0x63,0xb8,0xe4,0xf1], [0x68,0xb6,0xed,0xfc], |
844
|
|
|
|
|
|
|
[0xb1,0x0c,0x0a,0x67], [0xba,0x02,0x03,0x6a], [0xa7,0x10,0x18,0x7d], [0xac,0x1e,0x11,0x70], |
845
|
|
|
|
|
|
|
[0x9d,0x34,0x2e,0x53], [0x96,0x3a,0x27,0x5e], [0x8b,0x28,0x3c,0x49], [0x80,0x26,0x35,0x44], |
846
|
|
|
|
|
|
|
[0xe9,0x7c,0x42,0x0f], [0xe2,0x72,0x4b,0x02], [0xff,0x60,0x50,0x15], [0xf4,0x6e,0x59,0x18], |
847
|
|
|
|
|
|
|
[0xc5,0x44,0x66,0x3b], [0xce,0x4a,0x6f,0x36], [0xd3,0x58,0x74,0x21], [0xd8,0x56,0x7d,0x2c], |
848
|
|
|
|
|
|
|
[0x7a,0x37,0xa1,0x0c], [0x71,0x39,0xa8,0x01], [0x6c,0x2b,0xb3,0x16], [0x67,0x25,0xba,0x1b], |
849
|
|
|
|
|
|
|
[0x56,0x0f,0x85,0x38], [0x5d,0x01,0x8c,0x35], [0x40,0x13,0x97,0x22], [0x4b,0x1d,0x9e,0x2f], |
850
|
|
|
|
|
|
|
[0x22,0x47,0xe9,0x64], [0x29,0x49,0xe0,0x69], [0x34,0x5b,0xfb,0x7e], [0x3f,0x55,0xf2,0x73], |
851
|
|
|
|
|
|
|
[0x0e,0x7f,0xcd,0x50], [0x05,0x71,0xc4,0x5d], [0x18,0x63,0xdf,0x4a], [0x13,0x6d,0xd6,0x47], |
852
|
|
|
|
|
|
|
[0xca,0xd7,0x31,0xdc], [0xc1,0xd9,0x38,0xd1], [0xdc,0xcb,0x23,0xc6], [0xd7,0xc5,0x2a,0xcb], |
853
|
|
|
|
|
|
|
[0xe6,0xef,0x15,0xe8], [0xed,0xe1,0x1c,0xe5], [0xf0,0xf3,0x07,0xf2], [0xfb,0xfd,0x0e,0xff], |
854
|
|
|
|
|
|
|
[0x92,0xa7,0x79,0xb4], [0x99,0xa9,0x70,0xb9], [0x84,0xbb,0x6b,0xae], [0x8f,0xb5,0x62,0xa3], |
855
|
|
|
|
|
|
|
[0xbe,0x9f,0x5d,0x80], [0xb5,0x91,0x54,0x8d], [0xa8,0x83,0x4f,0x9a], [0xa3,0x8d,0x46,0x97] |
856
|
|
|
|
|
|
|
); |
857
|
|
|
|
|
|
|
|
858
|
|
|
|
|
|
|
my @U3 = ( |
859
|
|
|
|
|
|
|
[0x00,0x00,0x00,0x00], [0x0d,0x0b,0x0e,0x09], [0x1a,0x16,0x1c,0x12], [0x17,0x1d,0x12,0x1b], |
860
|
|
|
|
|
|
|
[0x34,0x2c,0x38,0x24], [0x39,0x27,0x36,0x2d], [0x2e,0x3a,0x24,0x36], [0x23,0x31,0x2a,0x3f], |
861
|
|
|
|
|
|
|
[0x68,0x58,0x70,0x48], [0x65,0x53,0x7e,0x41], [0x72,0x4e,0x6c,0x5a], [0x7f,0x45,0x62,0x53], |
862
|
|
|
|
|
|
|
[0x5c,0x74,0x48,0x6c], [0x51,0x7f,0x46,0x65], [0x46,0x62,0x54,0x7e], [0x4b,0x69,0x5a,0x77], |
863
|
|
|
|
|
|
|
[0xd0,0xb0,0xe0,0x90], [0xdd,0xbb,0xee,0x99], [0xca,0xa6,0xfc,0x82], [0xc7,0xad,0xf2,0x8b], |
864
|
|
|
|
|
|
|
[0xe4,0x9c,0xd8,0xb4], [0xe9,0x97,0xd6,0xbd], [0xfe,0x8a,0xc4,0xa6], [0xf3,0x81,0xca,0xaf], |
865
|
|
|
|
|
|
|
[0xb8,0xe8,0x90,0xd8], [0xb5,0xe3,0x9e,0xd1], [0xa2,0xfe,0x8c,0xca], [0xaf,0xf5,0x82,0xc3], |
866
|
|
|
|
|
|
|
[0x8c,0xc4,0xa8,0xfc], [0x81,0xcf,0xa6,0xf5], [0x96,0xd2,0xb4,0xee], [0x9b,0xd9,0xba,0xe7], |
867
|
|
|
|
|
|
|
[0xbb,0x7b,0xdb,0x3b], [0xb6,0x70,0xd5,0x32], [0xa1,0x6d,0xc7,0x29], [0xac,0x66,0xc9,0x20], |
868
|
|
|
|
|
|
|
[0x8f,0x57,0xe3,0x1f], [0x82,0x5c,0xed,0x16], [0x95,0x41,0xff,0x0d], [0x98,0x4a,0xf1,0x04], |
869
|
|
|
|
|
|
|
[0xd3,0x23,0xab,0x73], [0xde,0x28,0xa5,0x7a], [0xc9,0x35,0xb7,0x61], [0xc4,0x3e,0xb9,0x68], |
870
|
|
|
|
|
|
|
[0xe7,0x0f,0x93,0x57], [0xea,0x04,0x9d,0x5e], [0xfd,0x19,0x8f,0x45], [0xf0,0x12,0x81,0x4c], |
871
|
|
|
|
|
|
|
[0x6b,0xcb,0x3b,0xab], [0x66,0xc0,0x35,0xa2], [0x71,0xdd,0x27,0xb9], [0x7c,0xd6,0x29,0xb0], |
872
|
|
|
|
|
|
|
[0x5f,0xe7,0x03,0x8f], [0x52,0xec,0x0d,0x86], [0x45,0xf1,0x1f,0x9d], [0x48,0xfa,0x11,0x94], |
873
|
|
|
|
|
|
|
[0x03,0x93,0x4b,0xe3], [0x0e,0x98,0x45,0xea], [0x19,0x85,0x57,0xf1], [0x14,0x8e,0x59,0xf8], |
874
|
|
|
|
|
|
|
[0x37,0xbf,0x73,0xc7], [0x3a,0xb4,0x7d,0xce], [0x2d,0xa9,0x6f,0xd5], [0x20,0xa2,0x61,0xdc], |
875
|
|
|
|
|
|
|
[0x6d,0xf6,0xad,0x76], [0x60,0xfd,0xa3,0x7f], [0x77,0xe0,0xb1,0x64], [0x7a,0xeb,0xbf,0x6d], |
876
|
|
|
|
|
|
|
[0x59,0xda,0x95,0x52], [0x54,0xd1,0x9b,0x5b], [0x43,0xcc,0x89,0x40], [0x4e,0xc7,0x87,0x49], |
877
|
|
|
|
|
|
|
[0x05,0xae,0xdd,0x3e], [0x08,0xa5,0xd3,0x37], [0x1f,0xb8,0xc1,0x2c], [0x12,0xb3,0xcf,0x25], |
878
|
|
|
|
|
|
|
[0x31,0x82,0xe5,0x1a], [0x3c,0x89,0xeb,0x13], [0x2b,0x94,0xf9,0x08], [0x26,0x9f,0xf7,0x01], |
879
|
|
|
|
|
|
|
[0xbd,0x46,0x4d,0xe6], [0xb0,0x4d,0x43,0xef], [0xa7,0x50,0x51,0xf4], [0xaa,0x5b,0x5f,0xfd], |
880
|
|
|
|
|
|
|
[0x89,0x6a,0x75,0xc2], [0x84,0x61,0x7b,0xcb], [0x93,0x7c,0x69,0xd0], [0x9e,0x77,0x67,0xd9], |
881
|
|
|
|
|
|
|
[0xd5,0x1e,0x3d,0xae], [0xd8,0x15,0x33,0xa7], [0xcf,0x08,0x21,0xbc], [0xc2,0x03,0x2f,0xb5], |
882
|
|
|
|
|
|
|
[0xe1,0x32,0x05,0x8a], [0xec,0x39,0x0b,0x83], [0xfb,0x24,0x19,0x98], [0xf6,0x2f,0x17,0x91], |
883
|
|
|
|
|
|
|
[0xd6,0x8d,0x76,0x4d], [0xdb,0x86,0x78,0x44], [0xcc,0x9b,0x6a,0x5f], [0xc1,0x90,0x64,0x56], |
884
|
|
|
|
|
|
|
[0xe2,0xa1,0x4e,0x69], [0xef,0xaa,0x40,0x60], [0xf8,0xb7,0x52,0x7b], [0xf5,0xbc,0x5c,0x72], |
885
|
|
|
|
|
|
|
[0xbe,0xd5,0x06,0x05], [0xb3,0xde,0x08,0x0c], [0xa4,0xc3,0x1a,0x17], [0xa9,0xc8,0x14,0x1e], |
886
|
|
|
|
|
|
|
[0x8a,0xf9,0x3e,0x21], [0x87,0xf2,0x30,0x28], [0x90,0xef,0x22,0x33], [0x9d,0xe4,0x2c,0x3a], |
887
|
|
|
|
|
|
|
[0x06,0x3d,0x96,0xdd], [0x0b,0x36,0x98,0xd4], [0x1c,0x2b,0x8a,0xcf], [0x11,0x20,0x84,0xc6], |
888
|
|
|
|
|
|
|
[0x32,0x11,0xae,0xf9], [0x3f,0x1a,0xa0,0xf0], [0x28,0x07,0xb2,0xeb], [0x25,0x0c,0xbc,0xe2], |
889
|
|
|
|
|
|
|
[0x6e,0x65,0xe6,0x95], [0x63,0x6e,0xe8,0x9c], [0x74,0x73,0xfa,0x87], [0x79,0x78,0xf4,0x8e], |
890
|
|
|
|
|
|
|
[0x5a,0x49,0xde,0xb1], [0x57,0x42,0xd0,0xb8], [0x40,0x5f,0xc2,0xa3], [0x4d,0x54,0xcc,0xaa], |
891
|
|
|
|
|
|
|
[0xda,0xf7,0x41,0xec], [0xd7,0xfc,0x4f,0xe5], [0xc0,0xe1,0x5d,0xfe], [0xcd,0xea,0x53,0xf7], |
892
|
|
|
|
|
|
|
[0xee,0xdb,0x79,0xc8], [0xe3,0xd0,0x77,0xc1], [0xf4,0xcd,0x65,0xda], [0xf9,0xc6,0x6b,0xd3], |
893
|
|
|
|
|
|
|
[0xb2,0xaf,0x31,0xa4], [0xbf,0xa4,0x3f,0xad], [0xa8,0xb9,0x2d,0xb6], [0xa5,0xb2,0x23,0xbf], |
894
|
|
|
|
|
|
|
[0x86,0x83,0x09,0x80], [0x8b,0x88,0x07,0x89], [0x9c,0x95,0x15,0x92], [0x91,0x9e,0x1b,0x9b], |
895
|
|
|
|
|
|
|
[0x0a,0x47,0xa1,0x7c], [0x07,0x4c,0xaf,0x75], [0x10,0x51,0xbd,0x6e], [0x1d,0x5a,0xb3,0x67], |
896
|
|
|
|
|
|
|
[0x3e,0x6b,0x99,0x58], [0x33,0x60,0x97,0x51], [0x24,0x7d,0x85,0x4a], [0x29,0x76,0x8b,0x43], |
897
|
|
|
|
|
|
|
[0x62,0x1f,0xd1,0x34], [0x6f,0x14,0xdf,0x3d], [0x78,0x09,0xcd,0x26], [0x75,0x02,0xc3,0x2f], |
898
|
|
|
|
|
|
|
[0x56,0x33,0xe9,0x10], [0x5b,0x38,0xe7,0x19], [0x4c,0x25,0xf5,0x02], [0x41,0x2e,0xfb,0x0b], |
899
|
|
|
|
|
|
|
[0x61,0x8c,0x9a,0xd7], [0x6c,0x87,0x94,0xde], [0x7b,0x9a,0x86,0xc5], [0x76,0x91,0x88,0xcc], |
900
|
|
|
|
|
|
|
[0x55,0xa0,0xa2,0xf3], [0x58,0xab,0xac,0xfa], [0x4f,0xb6,0xbe,0xe1], [0x42,0xbd,0xb0,0xe8], |
901
|
|
|
|
|
|
|
[0x09,0xd4,0xea,0x9f], [0x04,0xdf,0xe4,0x96], [0x13,0xc2,0xf6,0x8d], [0x1e,0xc9,0xf8,0x84], |
902
|
|
|
|
|
|
|
[0x3d,0xf8,0xd2,0xbb], [0x30,0xf3,0xdc,0xb2], [0x27,0xee,0xce,0xa9], [0x2a,0xe5,0xc0,0xa0], |
903
|
|
|
|
|
|
|
[0xb1,0x3c,0x7a,0x47], [0xbc,0x37,0x74,0x4e], [0xab,0x2a,0x66,0x55], [0xa6,0x21,0x68,0x5c], |
904
|
|
|
|
|
|
|
[0x85,0x10,0x42,0x63], [0x88,0x1b,0x4c,0x6a], [0x9f,0x06,0x5e,0x71], [0x92,0x0d,0x50,0x78], |
905
|
|
|
|
|
|
|
[0xd9,0x64,0x0a,0x0f], [0xd4,0x6f,0x04,0x06], [0xc3,0x72,0x16,0x1d], [0xce,0x79,0x18,0x14], |
906
|
|
|
|
|
|
|
[0xed,0x48,0x32,0x2b], [0xe0,0x43,0x3c,0x22], [0xf7,0x5e,0x2e,0x39], [0xfa,0x55,0x20,0x30], |
907
|
|
|
|
|
|
|
[0xb7,0x01,0xec,0x9a], [0xba,0x0a,0xe2,0x93], [0xad,0x17,0xf0,0x88], [0xa0,0x1c,0xfe,0x81], |
908
|
|
|
|
|
|
|
[0x83,0x2d,0xd4,0xbe], [0x8e,0x26,0xda,0xb7], [0x99,0x3b,0xc8,0xac], [0x94,0x30,0xc6,0xa5], |
909
|
|
|
|
|
|
|
[0xdf,0x59,0x9c,0xd2], [0xd2,0x52,0x92,0xdb], [0xc5,0x4f,0x80,0xc0], [0xc8,0x44,0x8e,0xc9], |
910
|
|
|
|
|
|
|
[0xeb,0x75,0xa4,0xf6], [0xe6,0x7e,0xaa,0xff], [0xf1,0x63,0xb8,0xe4], [0xfc,0x68,0xb6,0xed], |
911
|
|
|
|
|
|
|
[0x67,0xb1,0x0c,0x0a], [0x6a,0xba,0x02,0x03], [0x7d,0xa7,0x10,0x18], [0x70,0xac,0x1e,0x11], |
912
|
|
|
|
|
|
|
[0x53,0x9d,0x34,0x2e], [0x5e,0x96,0x3a,0x27], [0x49,0x8b,0x28,0x3c], [0x44,0x80,0x26,0x35], |
913
|
|
|
|
|
|
|
[0x0f,0xe9,0x7c,0x42], [0x02,0xe2,0x72,0x4b], [0x15,0xff,0x60,0x50], [0x18,0xf4,0x6e,0x59], |
914
|
|
|
|
|
|
|
[0x3b,0xc5,0x44,0x66], [0x36,0xce,0x4a,0x6f], [0x21,0xd3,0x58,0x74], [0x2c,0xd8,0x56,0x7d], |
915
|
|
|
|
|
|
|
[0x0c,0x7a,0x37,0xa1], [0x01,0x71,0x39,0xa8], [0x16,0x6c,0x2b,0xb3], [0x1b,0x67,0x25,0xba], |
916
|
|
|
|
|
|
|
[0x38,0x56,0x0f,0x85], [0x35,0x5d,0x01,0x8c], [0x22,0x40,0x13,0x97], [0x2f,0x4b,0x1d,0x9e], |
917
|
|
|
|
|
|
|
[0x64,0x22,0x47,0xe9], [0x69,0x29,0x49,0xe0], [0x7e,0x34,0x5b,0xfb], [0x73,0x3f,0x55,0xf2], |
918
|
|
|
|
|
|
|
[0x50,0x0e,0x7f,0xcd], [0x5d,0x05,0x71,0xc4], [0x4a,0x18,0x63,0xdf], [0x47,0x13,0x6d,0xd6], |
919
|
|
|
|
|
|
|
[0xdc,0xca,0xd7,0x31], [0xd1,0xc1,0xd9,0x38], [0xc6,0xdc,0xcb,0x23], [0xcb,0xd7,0xc5,0x2a], |
920
|
|
|
|
|
|
|
[0xe8,0xe6,0xef,0x15], [0xe5,0xed,0xe1,0x1c], [0xf2,0xf0,0xf3,0x07], [0xff,0xfb,0xfd,0x0e], |
921
|
|
|
|
|
|
|
[0xb4,0x92,0xa7,0x79], [0xb9,0x99,0xa9,0x70], [0xae,0x84,0xbb,0x6b], [0xa3,0x8f,0xb5,0x62], |
922
|
|
|
|
|
|
|
[0x80,0xbe,0x9f,0x5d], [0x8d,0xb5,0x91,0x54], [0x9a,0xa8,0x83,0x4f], [0x97,0xa3,0x8d,0x46] |
923
|
|
|
|
|
|
|
); |
924
|
|
|
|
|
|
|
|
925
|
|
|
|
|
|
|
my @U4 = ( |
926
|
|
|
|
|
|
|
[0x00,0x00,0x00,0x00], [0x09,0x0d,0x0b,0x0e], [0x12,0x1a,0x16,0x1c], [0x1b,0x17,0x1d,0x12], |
927
|
|
|
|
|
|
|
[0x24,0x34,0x2c,0x38], [0x2d,0x39,0x27,0x36], [0x36,0x2e,0x3a,0x24], [0x3f,0x23,0x31,0x2a], |
928
|
|
|
|
|
|
|
[0x48,0x68,0x58,0x70], [0x41,0x65,0x53,0x7e], [0x5a,0x72,0x4e,0x6c], [0x53,0x7f,0x45,0x62], |
929
|
|
|
|
|
|
|
[0x6c,0x5c,0x74,0x48], [0x65,0x51,0x7f,0x46], [0x7e,0x46,0x62,0x54], [0x77,0x4b,0x69,0x5a], |
930
|
|
|
|
|
|
|
[0x90,0xd0,0xb0,0xe0], [0x99,0xdd,0xbb,0xee], [0x82,0xca,0xa6,0xfc], [0x8b,0xc7,0xad,0xf2], |
931
|
|
|
|
|
|
|
[0xb4,0xe4,0x9c,0xd8], [0xbd,0xe9,0x97,0xd6], [0xa6,0xfe,0x8a,0xc4], [0xaf,0xf3,0x81,0xca], |
932
|
|
|
|
|
|
|
[0xd8,0xb8,0xe8,0x90], [0xd1,0xb5,0xe3,0x9e], [0xca,0xa2,0xfe,0x8c], [0xc3,0xaf,0xf5,0x82], |
933
|
|
|
|
|
|
|
[0xfc,0x8c,0xc4,0xa8], [0xf5,0x81,0xcf,0xa6], [0xee,0x96,0xd2,0xb4], [0xe7,0x9b,0xd9,0xba], |
934
|
|
|
|
|
|
|
[0x3b,0xbb,0x7b,0xdb], [0x32,0xb6,0x70,0xd5], [0x29,0xa1,0x6d,0xc7], [0x20,0xac,0x66,0xc9], |
935
|
|
|
|
|
|
|
[0x1f,0x8f,0x57,0xe3], [0x16,0x82,0x5c,0xed], [0x0d,0x95,0x41,0xff], [0x04,0x98,0x4a,0xf1], |
936
|
|
|
|
|
|
|
[0x73,0xd3,0x23,0xab], [0x7a,0xde,0x28,0xa5], [0x61,0xc9,0x35,0xb7], [0x68,0xc4,0x3e,0xb9], |
937
|
|
|
|
|
|
|
[0x57,0xe7,0x0f,0x93], [0x5e,0xea,0x04,0x9d], [0x45,0xfd,0x19,0x8f], [0x4c,0xf0,0x12,0x81], |
938
|
|
|
|
|
|
|
[0xab,0x6b,0xcb,0x3b], [0xa2,0x66,0xc0,0x35], [0xb9,0x71,0xdd,0x27], [0xb0,0x7c,0xd6,0x29], |
939
|
|
|
|
|
|
|
[0x8f,0x5f,0xe7,0x03], [0x86,0x52,0xec,0x0d], [0x9d,0x45,0xf1,0x1f], [0x94,0x48,0xfa,0x11], |
940
|
|
|
|
|
|
|
[0xe3,0x03,0x93,0x4b], [0xea,0x0e,0x98,0x45], [0xf1,0x19,0x85,0x57], [0xf8,0x14,0x8e,0x59], |
941
|
|
|
|
|
|
|
[0xc7,0x37,0xbf,0x73], [0xce,0x3a,0xb4,0x7d], [0xd5,0x2d,0xa9,0x6f], [0xdc,0x20,0xa2,0x61], |
942
|
|
|
|
|
|
|
[0x76,0x6d,0xf6,0xad], [0x7f,0x60,0xfd,0xa3], [0x64,0x77,0xe0,0xb1], [0x6d,0x7a,0xeb,0xbf], |
943
|
|
|
|
|
|
|
[0x52,0x59,0xda,0x95], [0x5b,0x54,0xd1,0x9b], [0x40,0x43,0xcc,0x89], [0x49,0x4e,0xc7,0x87], |
944
|
|
|
|
|
|
|
[0x3e,0x05,0xae,0xdd], [0x37,0x08,0xa5,0xd3], [0x2c,0x1f,0xb8,0xc1], [0x25,0x12,0xb3,0xcf], |
945
|
|
|
|
|
|
|
[0x1a,0x31,0x82,0xe5], [0x13,0x3c,0x89,0xeb], [0x08,0x2b,0x94,0xf9], [0x01,0x26,0x9f,0xf7], |
946
|
|
|
|
|
|
|
[0xe6,0xbd,0x46,0x4d], [0xef,0xb0,0x4d,0x43], [0xf4,0xa7,0x50,0x51], [0xfd,0xaa,0x5b,0x5f], |
947
|
|
|
|
|
|
|
[0xc2,0x89,0x6a,0x75], [0xcb,0x84,0x61,0x7b], [0xd0,0x93,0x7c,0x69], [0xd9,0x9e,0x77,0x67], |
948
|
|
|
|
|
|
|
[0xae,0xd5,0x1e,0x3d], [0xa7,0xd8,0x15,0x33], [0xbc,0xcf,0x08,0x21], [0xb5,0xc2,0x03,0x2f], |
949
|
|
|
|
|
|
|
[0x8a,0xe1,0x32,0x05], [0x83,0xec,0x39,0x0b], [0x98,0xfb,0x24,0x19], [0x91,0xf6,0x2f,0x17], |
950
|
|
|
|
|
|
|
[0x4d,0xd6,0x8d,0x76], [0x44,0xdb,0x86,0x78], [0x5f,0xcc,0x9b,0x6a], [0x56,0xc1,0x90,0x64], |
951
|
|
|
|
|
|
|
[0x69,0xe2,0xa1,0x4e], [0x60,0xef,0xaa,0x40], [0x7b,0xf8,0xb7,0x52], [0x72,0xf5,0xbc,0x5c], |
952
|
|
|
|
|
|
|
[0x05,0xbe,0xd5,0x06], [0x0c,0xb3,0xde,0x08], [0x17,0xa4,0xc3,0x1a], [0x1e,0xa9,0xc8,0x14], |
953
|
|
|
|
|
|
|
[0x21,0x8a,0xf9,0x3e], [0x28,0x87,0xf2,0x30], [0x33,0x90,0xef,0x22], [0x3a,0x9d,0xe4,0x2c], |
954
|
|
|
|
|
|
|
[0xdd,0x06,0x3d,0x96], [0xd4,0x0b,0x36,0x98], [0xcf,0x1c,0x2b,0x8a], [0xc6,0x11,0x20,0x84], |
955
|
|
|
|
|
|
|
[0xf9,0x32,0x11,0xae], [0xf0,0x3f,0x1a,0xa0], [0xeb,0x28,0x07,0xb2], [0xe2,0x25,0x0c,0xbc], |
956
|
|
|
|
|
|
|
[0x95,0x6e,0x65,0xe6], [0x9c,0x63,0x6e,0xe8], [0x87,0x74,0x73,0xfa], [0x8e,0x79,0x78,0xf4], |
957
|
|
|
|
|
|
|
[0xb1,0x5a,0x49,0xde], [0xb8,0x57,0x42,0xd0], [0xa3,0x40,0x5f,0xc2], [0xaa,0x4d,0x54,0xcc], |
958
|
|
|
|
|
|
|
[0xec,0xda,0xf7,0x41], [0xe5,0xd7,0xfc,0x4f], [0xfe,0xc0,0xe1,0x5d], [0xf7,0xcd,0xea,0x53], |
959
|
|
|
|
|
|
|
[0xc8,0xee,0xdb,0x79], [0xc1,0xe3,0xd0,0x77], [0xda,0xf4,0xcd,0x65], [0xd3,0xf9,0xc6,0x6b], |
960
|
|
|
|
|
|
|
[0xa4,0xb2,0xaf,0x31], [0xad,0xbf,0xa4,0x3f], [0xb6,0xa8,0xb9,0x2d], [0xbf,0xa5,0xb2,0x23], |
961
|
|
|
|
|
|
|
[0x80,0x86,0x83,0x09], [0x89,0x8b,0x88,0x07], [0x92,0x9c,0x95,0x15], [0x9b,0x91,0x9e,0x1b], |
962
|
|
|
|
|
|
|
[0x7c,0x0a,0x47,0xa1], [0x75,0x07,0x4c,0xaf], [0x6e,0x10,0x51,0xbd], [0x67,0x1d,0x5a,0xb3], |
963
|
|
|
|
|
|
|
[0x58,0x3e,0x6b,0x99], [0x51,0x33,0x60,0x97], [0x4a,0x24,0x7d,0x85], [0x43,0x29,0x76,0x8b], |
964
|
|
|
|
|
|
|
[0x34,0x62,0x1f,0xd1], [0x3d,0x6f,0x14,0xdf], [0x26,0x78,0x09,0xcd], [0x2f,0x75,0x02,0xc3], |
965
|
|
|
|
|
|
|
[0x10,0x56,0x33,0xe9], [0x19,0x5b,0x38,0xe7], [0x02,0x4c,0x25,0xf5], [0x0b,0x41,0x2e,0xfb], |
966
|
|
|
|
|
|
|
[0xd7,0x61,0x8c,0x9a], [0xde,0x6c,0x87,0x94], [0xc5,0x7b,0x9a,0x86], [0xcc,0x76,0x91,0x88], |
967
|
|
|
|
|
|
|
[0xf3,0x55,0xa0,0xa2], [0xfa,0x58,0xab,0xac], [0xe1,0x4f,0xb6,0xbe], [0xe8,0x42,0xbd,0xb0], |
968
|
|
|
|
|
|
|
[0x9f,0x09,0xd4,0xea], [0x96,0x04,0xdf,0xe4], [0x8d,0x13,0xc2,0xf6], [0x84,0x1e,0xc9,0xf8], |
969
|
|
|
|
|
|
|
[0xbb,0x3d,0xf8,0xd2], [0xb2,0x30,0xf3,0xdc], [0xa9,0x27,0xee,0xce], [0xa0,0x2a,0xe5,0xc0], |
970
|
|
|
|
|
|
|
[0x47,0xb1,0x3c,0x7a], [0x4e,0xbc,0x37,0x74], [0x55,0xab,0x2a,0x66], [0x5c,0xa6,0x21,0x68], |
971
|
|
|
|
|
|
|
[0x63,0x85,0x10,0x42], [0x6a,0x88,0x1b,0x4c], [0x71,0x9f,0x06,0x5e], [0x78,0x92,0x0d,0x50], |
972
|
|
|
|
|
|
|
[0x0f,0xd9,0x64,0x0a], [0x06,0xd4,0x6f,0x04], [0x1d,0xc3,0x72,0x16], [0x14,0xce,0x79,0x18], |
973
|
|
|
|
|
|
|
[0x2b,0xed,0x48,0x32], [0x22,0xe0,0x43,0x3c], [0x39,0xf7,0x5e,0x2e], [0x30,0xfa,0x55,0x20], |
974
|
|
|
|
|
|
|
[0x9a,0xb7,0x01,0xec], [0x93,0xba,0x0a,0xe2], [0x88,0xad,0x17,0xf0], [0x81,0xa0,0x1c,0xfe], |
975
|
|
|
|
|
|
|
[0xbe,0x83,0x2d,0xd4], [0xb7,0x8e,0x26,0xda], [0xac,0x99,0x3b,0xc8], [0xa5,0x94,0x30,0xc6], |
976
|
|
|
|
|
|
|
[0xd2,0xdf,0x59,0x9c], [0xdb,0xd2,0x52,0x92], [0xc0,0xc5,0x4f,0x80], [0xc9,0xc8,0x44,0x8e], |
977
|
|
|
|
|
|
|
[0xf6,0xeb,0x75,0xa4], [0xff,0xe6,0x7e,0xaa], [0xe4,0xf1,0x63,0xb8], [0xed,0xfc,0x68,0xb6], |
978
|
|
|
|
|
|
|
[0x0a,0x67,0xb1,0x0c], [0x03,0x6a,0xba,0x02], [0x18,0x7d,0xa7,0x10], [0x11,0x70,0xac,0x1e], |
979
|
|
|
|
|
|
|
[0x2e,0x53,0x9d,0x34], [0x27,0x5e,0x96,0x3a], [0x3c,0x49,0x8b,0x28], [0x35,0x44,0x80,0x26], |
980
|
|
|
|
|
|
|
[0x42,0x0f,0xe9,0x7c], [0x4b,0x02,0xe2,0x72], [0x50,0x15,0xff,0x60], [0x59,0x18,0xf4,0x6e], |
981
|
|
|
|
|
|
|
[0x66,0x3b,0xc5,0x44], [0x6f,0x36,0xce,0x4a], [0x74,0x21,0xd3,0x58], [0x7d,0x2c,0xd8,0x56], |
982
|
|
|
|
|
|
|
[0xa1,0x0c,0x7a,0x37], [0xa8,0x01,0x71,0x39], [0xb3,0x16,0x6c,0x2b], [0xba,0x1b,0x67,0x25], |
983
|
|
|
|
|
|
|
[0x85,0x38,0x56,0x0f], [0x8c,0x35,0x5d,0x01], [0x97,0x22,0x40,0x13], [0x9e,0x2f,0x4b,0x1d], |
984
|
|
|
|
|
|
|
[0xe9,0x64,0x22,0x47], [0xe0,0x69,0x29,0x49], [0xfb,0x7e,0x34,0x5b], [0xf2,0x73,0x3f,0x55], |
985
|
|
|
|
|
|
|
[0xcd,0x50,0x0e,0x7f], [0xc4,0x5d,0x05,0x71], [0xdf,0x4a,0x18,0x63], [0xd6,0x47,0x13,0x6d], |
986
|
|
|
|
|
|
|
[0x31,0xdc,0xca,0xd7], [0x38,0xd1,0xc1,0xd9], [0x23,0xc6,0xdc,0xcb], [0x2a,0xcb,0xd7,0xc5], |
987
|
|
|
|
|
|
|
[0x15,0xe8,0xe6,0xef], [0x1c,0xe5,0xed,0xe1], [0x07,0xf2,0xf0,0xf3], [0x0e,0xff,0xfb,0xfd], |
988
|
|
|
|
|
|
|
[0x79,0xb4,0x92,0xa7], [0x70,0xb9,0x99,0xa9], [0x6b,0xae,0x84,0xbb], [0x62,0xa3,0x8f,0xb5], |
989
|
|
|
|
|
|
|
[0x5d,0x80,0xbe,0x9f], [0x54,0x8d,0xb5,0x91], [0x4f,0x9a,0xa8,0x83], [0x46,0x97,0xa3,0x8d] |
990
|
|
|
|
|
|
|
); |
991
|
|
|
|
|
|
|
|
992
|
|
|
|
|
|
|
|
993
|
|
|
|
|
|
|
# alg-ref.h |
994
|
|
|
|
|
|
|
# define MAXBC (256/32) |
995
|
|
|
|
|
|
|
# define MAXKC (256/32) |
996
|
|
|
|
|
|
|
# define MAXROUNDS 14 |
997
|
|
|
|
|
|
|
sub MAXBC() { 8 } |
998
|
|
|
|
|
|
|
sub MAXKC() { 8 } |
999
|
|
|
|
|
|
|
sub MAXROUNDS() { 14 } |
1000
|
|
|
|
|
|
|
|
1001
|
|
|
|
|
|
|
|
1002
|
|
|
|
|
|
|
# alg-ref.c |
1003
|
5
|
|
|
|
|
25580
|
use constant shifts => [ |
1004
|
|
|
|
|
|
|
[[0, 0], [1, 3], [2, 2], [3, 1]], |
1005
|
|
|
|
|
|
|
[[0, 0], [1, 5], [2, 4], [3, 3]], |
1006
|
|
|
|
|
|
|
[[0, 0], [1, 7], [3, 5], [4, 4]] |
1007
|
5
|
|
|
5
|
|
74
|
]; |
|
5
|
|
|
|
|
11
|
|
1008
|
|
|
|
|
|
|
|
1009
|
|
|
|
|
|
|
#word8 mul(word8 a, word8 b) { |
1010
|
|
|
|
|
|
|
# /* multiply two elements of GF(2^m) |
1011
|
|
|
|
|
|
|
# * needed for MixColumn and InvMixColumn |
1012
|
|
|
|
|
|
|
# */ |
1013
|
|
|
|
|
|
|
# if (a && b) return Alogtable[(Logtable[a] + Logtable[b])%255]; |
1014
|
|
|
|
|
|
|
# else return 0; |
1015
|
|
|
|
|
|
|
#} |
1016
|
|
|
|
|
|
|
sub mul($$) { |
1017
|
2506704
|
100
|
33
|
2506704
|
0
|
12230108
|
$_[0] && $_[1] ? Algotable->[(Logtable->[$_[0]] + Logtable->[$_[1]]) % 255] : 0 |
1018
|
|
|
|
|
|
|
} |
1019
|
|
|
|
|
|
|
|
1020
|
|
|
|
|
|
|
#void KeyAddition(word8 a[4][MAXBC], word8 rk[4][MAXBC], word8 BC) { |
1021
|
|
|
|
|
|
|
# /* Exor corresponding text input and round key input bytes |
1022
|
|
|
|
|
|
|
# */ |
1023
|
|
|
|
|
|
|
# int i, j; |
1024
|
|
|
|
|
|
|
# |
1025
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1026
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) a[i][j] ^= rk[i][j]; |
1027
|
|
|
|
|
|
|
#} |
1028
|
|
|
|
|
|
|
|
1029
|
|
|
|
|
|
|
#sub KeyAddition(@) { |
1030
|
|
|
|
|
|
|
# my @a = @_[0..3]; |
1031
|
|
|
|
|
|
|
# my $rk = $_[4]; |
1032
|
|
|
|
|
|
|
# my $BC = $_[5]; |
1033
|
|
|
|
|
|
|
# my $i; |
1034
|
|
|
|
|
|
|
# for $i (0..3) { |
1035
|
|
|
|
|
|
|
# for my $j (0 .. $BC-1) { |
1036
|
|
|
|
|
|
|
# $a[$i][$j] ^= $rk->[$i][$j] |
1037
|
|
|
|
|
|
|
# } |
1038
|
|
|
|
|
|
|
# } |
1039
|
|
|
|
|
|
|
# @_[0..3] = @a; # return by reference |
1040
|
|
|
|
|
|
|
#} |
1041
|
|
|
|
|
|
|
|
1042
|
|
|
|
|
|
|
|
1043
|
|
|
|
|
|
|
|
1044
|
|
|
|
|
|
|
|
1045
|
|
|
|
|
|
|
|
1046
|
|
|
|
|
|
|
sub KeyAddition { |
1047
|
60130
|
|
|
60130
|
0
|
113244
|
for my $j (0..($_[5]-1)) { |
1048
|
241044
|
|
|
|
|
432665
|
$_[0][$j] ^= $_[4][0][$j]; |
1049
|
241044
|
|
|
|
|
376260
|
$_[1][$j] ^= $_[4][1][$j]; |
1050
|
241044
|
|
|
|
|
378341
|
$_[2][$j] ^= $_[4][2][$j]; |
1051
|
241044
|
|
|
|
|
605632
|
$_[3][$j] ^= $_[4][3][$j]; |
1052
|
|
|
|
|
|
|
|
1053
|
|
|
|
|
|
|
} |
1054
|
|
|
|
|
|
|
} |
1055
|
|
|
|
|
|
|
|
1056
|
|
|
|
|
|
|
#void ShiftRow(word8 a[4][MAXBC], word8 d, word8 BC) { |
1057
|
|
|
|
|
|
|
# /* Row 0 remains unchanged |
1058
|
|
|
|
|
|
|
# * The other three rows are shifted a variable amount |
1059
|
|
|
|
|
|
|
# */ |
1060
|
|
|
|
|
|
|
# word8 tmp[MAXBC]; |
1061
|
|
|
|
|
|
|
# int i, j; |
1062
|
|
|
|
|
|
|
# |
1063
|
|
|
|
|
|
|
# for(i = 1; i < 4; i++) { |
1064
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) tmp[j] = a[i][(j + shifts[SC][i][d]) % BC]; |
1065
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) a[i][j] = tmp[j]; |
1066
|
|
|
|
|
|
|
# } |
1067
|
|
|
|
|
|
|
#} |
1068
|
|
|
|
|
|
|
|
1069
|
|
|
|
|
|
|
#sub ShiftRow(@) { |
1070
|
|
|
|
|
|
|
# my @a = @_[0..3]; |
1071
|
|
|
|
|
|
|
# my ($d,$BC) = @_[4,5]; |
1072
|
|
|
|
|
|
|
# my @tmp; |
1073
|
|
|
|
|
|
|
# my $i; |
1074
|
|
|
|
|
|
|
# # define SC ((BC - 4) >> 1) |
1075
|
|
|
|
|
|
|
# my $SC = ($BC-4)>>1; |
1076
|
|
|
|
|
|
|
# for $i (1..3) { |
1077
|
|
|
|
|
|
|
# my $j; |
1078
|
|
|
|
|
|
|
# for $j (0..$BC-1) { $tmp[$j] = $a[$i][($j + shifts->[$SC][$i][$d]) % $BC] } |
1079
|
|
|
|
|
|
|
# for $j (0..$BC-1) { $a[$i][$j] = $tmp[$j] } |
1080
|
|
|
|
|
|
|
# } |
1081
|
|
|
|
|
|
|
# @_[0..3] = @a; # return by reference |
1082
|
|
|
|
|
|
|
#} |
1083
|
|
|
|
|
|
|
|
1084
|
|
|
|
|
|
|
sub ShiftRow(@) { |
1085
|
56120
|
|
|
56120
|
0
|
64147
|
my @tmp; |
1086
|
56120
|
|
|
|
|
94842
|
for my $i (1..3) { |
1087
|
168360
|
|
|
|
|
173703
|
my $j; |
1088
|
168360
|
|
|
|
|
279763
|
for $j (0..$_[5]-1) { $tmp[$j] = $_[$i][($j + shifts->[($_[5]-4)>>1][$i][$_[4]]) % $_[5]] } |
|
674904
|
|
|
|
|
1677159
|
|
1089
|
168360
|
|
|
|
|
384852
|
for $j (0..$_[5]-1) { $_[$i][$j] = $tmp[$j] } |
|
674904
|
|
|
|
|
1281312
|
|
1090
|
|
|
|
|
|
|
} |
1091
|
|
|
|
|
|
|
} |
1092
|
|
|
|
|
|
|
|
1093
|
|
|
|
|
|
|
#void Substitution(word8 a[4][MAXBC], word8 box[256], word8 BC) { |
1094
|
|
|
|
|
|
|
# /* Replace every byte of the input by the byte at that place |
1095
|
|
|
|
|
|
|
# * in the nonlinear S-box |
1096
|
|
|
|
|
|
|
# */ |
1097
|
|
|
|
|
|
|
# int i, j; |
1098
|
|
|
|
|
|
|
# |
1099
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1100
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) a[i][j] = box[a[i][j]] ; |
1101
|
|
|
|
|
|
|
#} |
1102
|
|
|
|
|
|
|
|
1103
|
|
|
|
|
|
|
sub Substitution (@) { |
1104
|
56120
|
50
|
|
56120
|
0
|
144375
|
die "Substitution" unless @_ == 261; |
1105
|
56120
|
|
|
|
|
158700
|
my @a = @_[0..3]; |
1106
|
56120
|
|
|
|
|
1560399
|
my @box = @_[4..259]; |
1107
|
56120
|
|
|
|
|
107864
|
my $BC = $_[260]; |
1108
|
56120
|
|
|
|
|
60513
|
my $i; |
1109
|
56120
|
|
|
|
|
110766
|
for $i (0..3) { |
1110
|
224480
|
|
|
|
|
237856
|
my $j; |
1111
|
224480
|
|
|
|
|
352165
|
for $j (0..$BC-1) { $a[$i][$j] = $box[$a[$i][$j]] } |
|
899872
|
|
|
|
|
1835000
|
|
1112
|
|
|
|
|
|
|
} |
1113
|
56120
|
|
|
|
|
608469
|
@_[0..3] = @a; # return by reference |
1114
|
|
|
|
|
|
|
} |
1115
|
|
|
|
|
|
|
|
1116
|
|
|
|
|
|
|
#void MixColumn(word8 a[4][MAXBC], word8 BC) { |
1117
|
|
|
|
|
|
|
# /* Mix the four bytes of every column in a linear way |
1118
|
|
|
|
|
|
|
# */ |
1119
|
|
|
|
|
|
|
# word8 b[4][MAXBC]; |
1120
|
|
|
|
|
|
|
# int i, j; |
1121
|
|
|
|
|
|
|
# |
1122
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) |
1123
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1124
|
|
|
|
|
|
|
# b[i][j] = mul(2,a[i][j]) |
1125
|
|
|
|
|
|
|
# ^ mul(3,a[(i + 1) % 4][j]) |
1126
|
|
|
|
|
|
|
# ^ a[(i + 2) % 4][j] |
1127
|
|
|
|
|
|
|
# ^ a[(i + 3) % 4][j]; |
1128
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1129
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) a[i][j] = b[i][j]; |
1130
|
|
|
|
|
|
|
#} |
1131
|
|
|
|
|
|
|
|
1132
|
|
|
|
|
|
|
sub MixColumn (@) { |
1133
|
26055
|
|
|
26055
|
0
|
74129
|
my @a = @_[0..3]; |
1134
|
26055
|
|
|
|
|
31458
|
my $BC = $_[4]; |
1135
|
26055
|
|
|
|
|
25556
|
my @b; |
1136
|
26055
|
|
|
|
|
25879
|
my ($j,$i); |
1137
|
26055
|
|
|
|
|
56988
|
for $j (0..$BC-1) { |
1138
|
104446
|
|
|
|
|
183408
|
for $i (0..3) { |
1139
|
417784
|
|
|
|
|
805912
|
$b[$i][$j] = mul(2,$a[$i][$j]) |
1140
|
|
|
|
|
|
|
^ mul(3,$a[($i+1) % 4][$j]) |
1141
|
|
|
|
|
|
|
^ $a[($i+2) % 4][$j] |
1142
|
|
|
|
|
|
|
^ $a[($i+3) % 4][$j] |
1143
|
|
|
|
|
|
|
} |
1144
|
|
|
|
|
|
|
} |
1145
|
26055
|
|
|
|
|
69046
|
for $i (0..3) { |
1146
|
104220
|
|
|
|
|
184195
|
for $j (0..$BC-1) { |
1147
|
417784
|
|
|
|
|
796518
|
$a[$i][$j] = $b[$i][$j]; |
1148
|
|
|
|
|
|
|
} |
1149
|
|
|
|
|
|
|
} |
1150
|
26055
|
|
|
|
|
156765
|
@_[0..3] = @a; # return by reference |
1151
|
|
|
|
|
|
|
} |
1152
|
|
|
|
|
|
|
|
1153
|
|
|
|
|
|
|
#void InvMixColumn(word8 a[4][MAXBC], word8 BC) { |
1154
|
|
|
|
|
|
|
# /* Mix the four bytes of every column in a linear way |
1155
|
|
|
|
|
|
|
# * This is the opposite operation of Mixcolumn |
1156
|
|
|
|
|
|
|
# */ |
1157
|
|
|
|
|
|
|
# word8 b[4][MAXBC]; |
1158
|
|
|
|
|
|
|
# int i, j; |
1159
|
|
|
|
|
|
|
# |
1160
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) |
1161
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1162
|
|
|
|
|
|
|
# b[i][j] = mul(0xe,a[i][j]) |
1163
|
|
|
|
|
|
|
# ^ mul(0xb,a[(i + 1) % 4][j]) |
1164
|
|
|
|
|
|
|
# ^ mul(0xd,a[(i + 2) % 4][j]) |
1165
|
|
|
|
|
|
|
# ^ mul(0x9,a[(i + 3) % 4][j]); |
1166
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1167
|
|
|
|
|
|
|
# for(j = 0; j < BC; j++) a[i][j] = b[i][j]; |
1168
|
|
|
|
|
|
|
#} |
1169
|
|
|
|
|
|
|
|
1170
|
|
|
|
|
|
|
sub InvMixColumn (@) { |
1171
|
26055
|
|
|
26055
|
0
|
67764
|
my @a = @_[0..3]; |
1172
|
26055
|
|
|
|
|
31332
|
my $BC = $_[4]; |
1173
|
26055
|
|
|
|
|
25630
|
my @b; |
1174
|
26055
|
|
|
|
|
25905
|
my ($i,$j); |
1175
|
26055
|
|
|
|
|
42530
|
for $j (0..$BC-1) { |
1176
|
104446
|
|
|
|
|
153531
|
for $i (0..3) { |
1177
|
417784
|
|
|
|
|
907644
|
$b[$i][$j] = mul(0xe,$a[$i][$j]) |
1178
|
|
|
|
|
|
|
^ mul(0xb,$a[($i+1) % 4][$j]) |
1179
|
|
|
|
|
|
|
^ mul(0xd,$a[($i+2) % 4][$j]) |
1180
|
|
|
|
|
|
|
^ mul(0x9,$a[($i+3) % 4][$j]) |
1181
|
|
|
|
|
|
|
} |
1182
|
|
|
|
|
|
|
} |
1183
|
26055
|
|
|
|
|
50678
|
for $i (0..3) { |
1184
|
104220
|
|
|
|
|
178599
|
for $j (0..$BC-1) { |
1185
|
417784
|
|
|
|
|
762810
|
$a[$i][$j] = $b[$i][$j]; |
1186
|
|
|
|
|
|
|
} |
1187
|
|
|
|
|
|
|
} |
1188
|
26055
|
|
|
|
|
229584
|
@_[0..3] = @a; # return by reference |
1189
|
|
|
|
|
|
|
} |
1190
|
|
|
|
|
|
|
|
1191
|
|
|
|
|
|
|
#int rijndaelKeySched (word8 k[4][MAXKC], int keyBits, int blockBits, word8 W[MAXROUNDS+1][4][MAXBC]) { |
1192
|
|
|
|
|
|
|
# /* Calculate the necessary round keys |
1193
|
|
|
|
|
|
|
# * The number of calculations depends on keyBits and blockBits |
1194
|
|
|
|
|
|
|
# */ |
1195
|
|
|
|
|
|
|
# int KC, BC, ROUNDS; |
1196
|
|
|
|
|
|
|
# int i, j, t, rconpointer = 0; |
1197
|
|
|
|
|
|
|
# word8 tk[4][MAXKC]; |
1198
|
|
|
|
|
|
|
|
1199
|
|
|
|
|
|
|
sub rijndaelKeySched (@) { |
1200
|
438
|
|
|
438
|
0
|
1502
|
my @k = @_[0..3]; |
1201
|
438
|
|
|
|
|
784
|
my $keyBits = $_[4]; |
1202
|
438
|
|
|
|
|
584
|
my $blockBits = $_[5]; |
1203
|
|
|
|
|
|
|
# my @W = @_[6..$#_]; # the rest |
1204
|
438
|
|
|
|
|
1255
|
my $W = $_[6]; |
1205
|
|
|
|
|
|
|
|
1206
|
438
|
|
|
|
|
549
|
my @tk; |
1207
|
438
|
|
|
|
|
564
|
my $rconpointer = 0; |
1208
|
|
|
|
|
|
|
|
1209
|
|
|
|
|
|
|
# |
1210
|
|
|
|
|
|
|
# switch (keyBits) { |
1211
|
|
|
|
|
|
|
# case 128: KC = 4; break; |
1212
|
|
|
|
|
|
|
# case 192: KC = 6; break; |
1213
|
|
|
|
|
|
|
# case 256: KC = 8; break; |
1214
|
|
|
|
|
|
|
# default : return (-1); |
1215
|
|
|
|
|
|
|
# } |
1216
|
|
|
|
|
|
|
# |
1217
|
|
|
|
|
|
|
# switch (blockBits) { |
1218
|
|
|
|
|
|
|
# case 128: BC = 4; break; |
1219
|
|
|
|
|
|
|
# case 192: BC = 6; break; |
1220
|
|
|
|
|
|
|
# case 256: BC = 8; break; |
1221
|
|
|
|
|
|
|
# default : return (-2); |
1222
|
|
|
|
|
|
|
# } |
1223
|
|
|
|
|
|
|
# |
1224
|
|
|
|
|
|
|
# switch (keyBits >= blockBits ? keyBits : blockBits) { |
1225
|
|
|
|
|
|
|
# case 128: ROUNDS = 10; break; |
1226
|
|
|
|
|
|
|
# case 192: ROUNDS = 12; break; |
1227
|
|
|
|
|
|
|
# case 256: ROUNDS = 14; break; |
1228
|
|
|
|
|
|
|
# default : return (-3); /* this cannot happen */ |
1229
|
|
|
|
|
|
|
# } |
1230
|
|
|
|
|
|
|
|
1231
|
438
|
50
|
|
|
|
2063
|
my $KC = $keyBits == 128 ? 4 : $keyBits == 192 ? 6 : $keyBits == 256 ? 8 : return -1; |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1232
|
|
|
|
|
|
|
|
1233
|
438
|
50
|
|
|
|
917
|
my $BC = $blockBits == 128 ? 4 : $blockBits == 192 ? 6 : $blockBits == 256 ? 8 : return -2; |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1234
|
|
|
|
|
|
|
|
1235
|
438
|
|
|
|
|
602
|
my $ROUNDS; |
1236
|
438
|
100
|
|
|
|
636
|
{ my $tmp = $keyBits >= $blockBits ? $keyBits : $blockBits; |
|
438
|
|
|
|
|
1023
|
|
1237
|
438
|
50
|
|
|
|
1860
|
$ROUNDS = $tmp == 128 ? 10 : $tmp == 192 ? 12 : $tmp == 256 ? 14 : return -3; # this cannot happen |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1238
|
|
|
|
|
|
|
} |
1239
|
|
|
|
|
|
|
|
1240
|
|
|
|
|
|
|
# |
1241
|
|
|
|
|
|
|
# |
1242
|
|
|
|
|
|
|
# for(j = 0; j < KC; j++) |
1243
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1244
|
|
|
|
|
|
|
# tk[i][j] = k[i][j]; |
1245
|
|
|
|
|
|
|
# t = 0; |
1246
|
|
|
|
|
|
|
# /* copy values into round key array */ |
1247
|
|
|
|
|
|
|
# for(j = 0; (j < KC) && (t < (ROUNDS+1)*BC); j++, t++) |
1248
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) W[t / BC][i][t % BC] = tk[i][j]; |
1249
|
|
|
|
|
|
|
# |
1250
|
|
|
|
|
|
|
|
1251
|
438
|
|
|
|
|
539
|
my ($j,$i); |
1252
|
438
|
|
|
|
|
923
|
for $j (0..$KC-1) { |
1253
|
3468
|
|
|
|
|
4463
|
for $i (0..3) { |
1254
|
13872
|
|
|
|
|
29732
|
$tk[$i][$j] = $k[$i][$j]; |
1255
|
|
|
|
|
|
|
} |
1256
|
|
|
|
|
|
|
} |
1257
|
|
|
|
|
|
|
|
1258
|
438
|
|
|
|
|
775
|
my $t = 0; |
1259
|
|
|
|
|
|
|
|
1260
|
438
|
|
66
|
|
|
2694
|
for ($j = 0; ($j <$KC) and ($t < ($ROUNDS+1)*$BC); $j++, $t++) { |
1261
|
3468
|
|
|
|
|
4647
|
for $i (0..3) { |
1262
|
13872
|
|
|
|
|
38824
|
$W->[$t/$BC][$i][$t % $BC] = $tk[$i][$j] |
1263
|
|
|
|
|
|
|
} |
1264
|
|
|
|
|
|
|
} |
1265
|
|
|
|
|
|
|
|
1266
|
|
|
|
|
|
|
# while (t < (ROUNDS+1)*BC) { /* while not enough round key material calculated */ |
1267
|
|
|
|
|
|
|
# /* calculate new values */ |
1268
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) |
1269
|
|
|
|
|
|
|
# tk[i][0] ^= S[tk[(i+1)%4][KC-1]]; |
1270
|
|
|
|
|
|
|
# tk[0][0] ^= rcon[rconpointer++]; |
1271
|
|
|
|
|
|
|
# |
1272
|
|
|
|
|
|
|
# if (KC != 8) |
1273
|
|
|
|
|
|
|
# for(j = 1; j < KC; j++) |
1274
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) tk[i][j] ^= tk[i][j-1]; |
1275
|
|
|
|
|
|
|
# else { |
1276
|
|
|
|
|
|
|
# for(j = 1; j < KC/2; j++) |
1277
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) tk[i][j] ^= tk[i][j-1]; |
1278
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) tk[i][KC/2] ^= S[tk[i][KC/2 - 1]]; |
1279
|
|
|
|
|
|
|
# for(j = KC/2 + 1; j < KC; j++) |
1280
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) tk[i][j] ^= tk[i][j-1]; |
1281
|
|
|
|
|
|
|
# } |
1282
|
|
|
|
|
|
|
|
1283
|
438
|
|
|
|
|
1450
|
while ($t < ($ROUNDS+1)*$BC) { |
1284
|
3198
|
|
|
|
|
4282
|
for $i (0..3) { |
1285
|
12792
|
|
|
|
|
23968
|
$tk[$i][0] ^= $S[$tk[($i+1) % 4][$KC-1]]; |
1286
|
|
|
|
|
|
|
} |
1287
|
3198
|
|
|
|
|
6143
|
$tk[0][0] ^= $rcon[$rconpointer++]; |
1288
|
|
|
|
|
|
|
|
1289
|
3198
|
100
|
|
|
|
5923
|
if ($KC != 8) { |
1290
|
194
|
|
|
|
|
465
|
for $j (1..$KC-1) { |
1291
|
738
|
|
|
|
|
842
|
for $i (0..3) { $tk[$i][$j] ^= $tk[$i][$j-1] } |
|
2952
|
|
|
|
|
5060
|
|
1292
|
|
|
|
|
|
|
} |
1293
|
|
|
|
|
|
|
} else { |
1294
|
3004
|
|
|
|
|
8550
|
for ($j = 1; $j < $KC/2; $j++) { |
1295
|
9012
|
|
|
|
|
11171
|
for $i (0..3) { $tk[$i][$j] ^= $tk[$i][$j-1] } |
|
36048
|
|
|
|
|
74559
|
|
1296
|
|
|
|
|
|
|
} |
1297
|
3004
|
|
|
|
|
4108
|
for $i (0..3) { $tk[$i][$KC/2] ^= $S[$tk[$i][$KC/2-1]] } |
|
12016
|
|
|
|
|
21714
|
|
1298
|
3004
|
|
|
|
|
7500
|
for ($j = $KC/2+1; $j < $KC; $j++) { |
1299
|
9012
|
|
|
|
|
11238
|
for $i (0..3) { $tk[$i][$j] ^= $tk[$i][$j-1] } |
|
36048
|
|
|
|
|
70742
|
|
1300
|
|
|
|
|
|
|
} |
1301
|
|
|
|
|
|
|
} |
1302
|
|
|
|
|
|
|
|
1303
|
|
|
|
|
|
|
# /* copy values into round key array */ |
1304
|
|
|
|
|
|
|
# for(j = 0; (j < KC) && (t < (ROUNDS+1)*BC); j++, t++) |
1305
|
|
|
|
|
|
|
# for(i = 0; i < 4; i++) W[t / BC][i][t % BC] = tk[i][j]; |
1306
|
|
|
|
|
|
|
# } |
1307
|
|
|
|
|
|
|
# |
1308
|
|
|
|
|
|
|
# return 0; |
1309
|
|
|
|
|
|
|
#} |
1310
|
|
|
|
|
|
|
|
1311
|
3198
|
|
100
|
|
|
14964
|
for ($j=0; ($j<$KC) and ($t < ($ROUNDS+1)*$BC); $j++, $t++) { |
1312
|
23256
|
|
|
|
|
29628
|
for $i (0..3) { $W->[$t/$BC][$i][$t % $BC] = $tk[$i][$j] } |
|
93024
|
|
|
|
|
262738
|
|
1313
|
|
|
|
|
|
|
} |
1314
|
|
|
|
|
|
|
} |
1315
|
|
|
|
|
|
|
|
1316
|
|
|
|
|
|
|
# @_[6..$#_] = @W; # return by reference |
1317
|
438
|
|
|
|
|
1546
|
$_[6] = $W; |
1318
|
438
|
|
|
|
|
2147
|
return 0; |
1319
|
|
|
|
|
|
|
} |
1320
|
|
|
|
|
|
|
|
1321
|
|
|
|
|
|
|
|
1322
|
|
|
|
|
|
|
|
1323
|
|
|
|
|
|
|
#int rijndaelEncrypt (word8 a[4][MAXBC], int keyBits, int blockBits, word8 rk[MAXROUNDS+1][4][MAXBC]) |
1324
|
|
|
|
|
|
|
#{ |
1325
|
|
|
|
|
|
|
# /* Encryption of one block. |
1326
|
|
|
|
|
|
|
# */ |
1327
|
|
|
|
|
|
|
# int r, BC, ROUNDS; |
1328
|
|
|
|
|
|
|
|
1329
|
|
|
|
|
|
|
sub rijndaelEncrypt (@) { |
1330
|
2005
|
|
|
2005
|
0
|
6014
|
my @a = @_[0..3]; |
1331
|
2005
|
|
|
|
|
9885
|
my $keyBits = $_[4]; |
1332
|
2005
|
|
|
|
|
3049
|
my $blockBits = $_[5]; |
1333
|
|
|
|
|
|
|
#my @rk = $_[6..$#_]; # rest |
1334
|
2005
|
|
|
|
|
3392
|
my $rk = $_[6]; |
1335
|
|
|
|
|
|
|
|
1336
|
2005
|
|
|
|
|
4033
|
my $r; |
1337
|
|
|
|
|
|
|
|
1338
|
|
|
|
|
|
|
# |
1339
|
|
|
|
|
|
|
# switch (blockBits) { |
1340
|
|
|
|
|
|
|
# case 128: BC = 4; break; |
1341
|
|
|
|
|
|
|
# case 192: BC = 6; break; |
1342
|
|
|
|
|
|
|
# case 256: BC = 8; break; |
1343
|
|
|
|
|
|
|
# default : return (-2); |
1344
|
|
|
|
|
|
|
# } |
1345
|
|
|
|
|
|
|
# |
1346
|
|
|
|
|
|
|
# switch (keyBits >= blockBits ? keyBits : blockBits) { |
1347
|
|
|
|
|
|
|
# case 128: ROUNDS = 10; break; |
1348
|
|
|
|
|
|
|
# case 192: ROUNDS = 12; break; |
1349
|
|
|
|
|
|
|
# case 256: ROUNDS = 14; break; |
1350
|
|
|
|
|
|
|
# default : return (-3); /* this cannot happen */ |
1351
|
|
|
|
|
|
|
# } |
1352
|
|
|
|
|
|
|
|
1353
|
2005
|
50
|
|
|
|
4881
|
my $BC = $blockBits == 128 ? 4 : $blockBits == 192 ? 6 : $blockBits == 256 ? 8 : return -2; |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1354
|
|
|
|
|
|
|
|
1355
|
2005
|
|
|
|
|
3728
|
my $ROUNDS; |
1356
|
2005
|
100
|
|
|
|
2451
|
{ my $tmp = $keyBits >= $blockBits ? $keyBits : $blockBits; |
|
2005
|
|
|
|
|
4199
|
|
1357
|
2005
|
50
|
|
|
|
8243
|
$ROUNDS = $tmp == 128 ? 10 : $tmp == 192 ? 12 : $tmp == 256 ? 14 : return -3; # this cannot happen |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1358
|
|
|
|
|
|
|
} |
1359
|
|
|
|
|
|
|
|
1360
|
|
|
|
|
|
|
# |
1361
|
|
|
|
|
|
|
# /* begin with a key addition |
1362
|
|
|
|
|
|
|
# */ |
1363
|
|
|
|
|
|
|
# KeyAddition(a,rk[0],BC); |
1364
|
|
|
|
|
|
|
|
1365
|
2005
|
|
|
|
|
5679
|
KeyAddition(@a,$rk->[0],$BC); |
1366
|
|
|
|
|
|
|
|
1367
|
|
|
|
|
|
|
# |
1368
|
|
|
|
|
|
|
# /* ROUNDS-1 ordinary rounds |
1369
|
|
|
|
|
|
|
# */ |
1370
|
|
|
|
|
|
|
# for(r = 1; r < ROUNDS; r++) { |
1371
|
|
|
|
|
|
|
# Substitution(a,S,BC); |
1372
|
|
|
|
|
|
|
# ShiftRow(a,0,BC); |
1373
|
|
|
|
|
|
|
# MixColumn(a,BC); |
1374
|
|
|
|
|
|
|
# KeyAddition(a,rk[r],BC); |
1375
|
|
|
|
|
|
|
# } |
1376
|
|
|
|
|
|
|
|
1377
|
2005
|
|
|
|
|
7986
|
for $r (1..$ROUNDS-1) { |
1378
|
26055
|
|
|
|
|
143855
|
Substitution(@a,@S,$BC); |
1379
|
26055
|
|
|
|
|
64380
|
ShiftRow(@a,0,$BC); |
1380
|
26055
|
|
|
|
|
55757
|
MixColumn(@a,$BC); |
1381
|
26055
|
|
|
|
|
70659
|
KeyAddition(@a,$rk->[$r],$BC); |
1382
|
|
|
|
|
|
|
} |
1383
|
|
|
|
|
|
|
|
1384
|
|
|
|
|
|
|
# |
1385
|
|
|
|
|
|
|
# /* Last round is special: there is no MixColumn |
1386
|
|
|
|
|
|
|
# */ |
1387
|
|
|
|
|
|
|
# Substitution(a,S,BC); |
1388
|
|
|
|
|
|
|
# ShiftRow(a,0,BC); |
1389
|
|
|
|
|
|
|
# KeyAddition(a,rk[ROUNDS],BC); |
1390
|
|
|
|
|
|
|
# |
1391
|
|
|
|
|
|
|
# return 0; |
1392
|
|
|
|
|
|
|
#} |
1393
|
|
|
|
|
|
|
|
1394
|
2005
|
|
|
|
|
9419
|
Substitution(@a,@S,$BC); |
1395
|
2005
|
|
|
|
|
5594
|
ShiftRow(@a,0,$BC); |
1396
|
2005
|
|
|
|
|
6275
|
KeyAddition(@a,$rk->[$ROUNDS],$BC); |
1397
|
|
|
|
|
|
|
|
1398
|
2005
|
|
|
|
|
6891
|
@_[0..3] = @a; |
1399
|
|
|
|
|
|
|
|
1400
|
2005
|
|
|
|
|
5883
|
return 0; |
1401
|
|
|
|
|
|
|
} |
1402
|
|
|
|
|
|
|
|
1403
|
|
|
|
|
|
|
|
1404
|
|
|
|
|
|
|
|
1405
|
|
|
|
|
|
|
#int rijndaelEncryptRound (word8 a[4][MAXBC], int keyBits, int blockBits, |
1406
|
|
|
|
|
|
|
# word8 rk[MAXROUNDS+1][4][MAXBC], int rounds) |
1407
|
|
|
|
|
|
|
#/* Encrypt only a certain number of rounds. |
1408
|
|
|
|
|
|
|
# * Only used in the Intermediate Value Known Answer Test. |
1409
|
|
|
|
|
|
|
# */ |
1410
|
|
|
|
|
|
|
#{ |
1411
|
|
|
|
|
|
|
# int r, BC, ROUNDS; |
1412
|
|
|
|
|
|
|
|
1413
|
|
|
|
|
|
|
sub rijndaelEncryptRound (@) { |
1414
|
0
|
|
|
0
|
0
|
0
|
my $rounds = pop; # last element |
1415
|
|
|
|
|
|
|
|
1416
|
0
|
|
|
|
|
0
|
my @a = @_[0..3]; |
1417
|
0
|
|
|
|
|
0
|
my $keyBits = $_[4]; |
1418
|
0
|
|
|
|
|
0
|
my $blockBits = $_[5]; |
1419
|
|
|
|
|
|
|
# my @rk = $_[6..$#_]; # rest |
1420
|
0
|
|
|
|
|
0
|
my $rk = $_[6]; |
1421
|
|
|
|
|
|
|
|
1422
|
0
|
|
|
|
|
0
|
my $r; |
1423
|
|
|
|
|
|
|
|
1424
|
|
|
|
|
|
|
# |
1425
|
|
|
|
|
|
|
# switch (blockBits) { |
1426
|
|
|
|
|
|
|
# case 128: BC = 4; break; |
1427
|
|
|
|
|
|
|
# case 192: BC = 6; break; |
1428
|
|
|
|
|
|
|
# case 256: BC = 8; break; |
1429
|
|
|
|
|
|
|
# default : return (-2); |
1430
|
|
|
|
|
|
|
# } |
1431
|
|
|
|
|
|
|
# |
1432
|
|
|
|
|
|
|
# switch (keyBits >= blockBits ? keyBits : blockBits) { |
1433
|
|
|
|
|
|
|
# case 128: ROUNDS = 10; break; |
1434
|
|
|
|
|
|
|
# case 192: ROUNDS = 12; break; |
1435
|
|
|
|
|
|
|
# case 256: ROUNDS = 14; break; |
1436
|
|
|
|
|
|
|
# default : return (-3); /* this cannot happen */ |
1437
|
|
|
|
|
|
|
# } |
1438
|
|
|
|
|
|
|
|
1439
|
0
|
0
|
|
|
|
0
|
my $BC = $blockBits == 128 ? 4 : $blockBits == 192 ? 6 : $blockBits == 256 ? 8 : return -2; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
1440
|
|
|
|
|
|
|
|
1441
|
0
|
|
|
|
|
0
|
my $ROUNDS; |
1442
|
0
|
0
|
|
|
|
0
|
{ my $tmp = $keyBits >= $blockBits ? $keyBits : $blockBits; |
|
0
|
|
|
|
|
0
|
|
1443
|
0
|
0
|
|
|
|
0
|
$ROUNDS = $tmp == 128 ? 10 : $tmp == 192 ? 12 : $tmp == 256 ? 14 : return -3; # this cannot happen |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
1444
|
|
|
|
|
|
|
} |
1445
|
|
|
|
|
|
|
|
1446
|
|
|
|
|
|
|
|
1447
|
|
|
|
|
|
|
# |
1448
|
|
|
|
|
|
|
# /* make number of rounds sane */ |
1449
|
|
|
|
|
|
|
# if (rounds > ROUNDS) rounds = ROUNDS; |
1450
|
|
|
|
|
|
|
|
1451
|
0
|
0
|
|
|
|
0
|
$rounds = $ROUNDS if $rounds > $ROUNDS; |
1452
|
|
|
|
|
|
|
|
1453
|
|
|
|
|
|
|
# |
1454
|
|
|
|
|
|
|
# /* begin with a key addition |
1455
|
|
|
|
|
|
|
# */ |
1456
|
|
|
|
|
|
|
# KeyAddition(a,rk[0],BC); |
1457
|
|
|
|
|
|
|
|
1458
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[0],$BC); |
1459
|
|
|
|
|
|
|
|
1460
|
|
|
|
|
|
|
# |
1461
|
|
|
|
|
|
|
# /* at most ROUNDS-1 ordinary rounds |
1462
|
|
|
|
|
|
|
# */ |
1463
|
|
|
|
|
|
|
# for(r = 1; (r <= rounds) && (r < ROUNDS); r++) { |
1464
|
|
|
|
|
|
|
# Substitution(a,S,BC); |
1465
|
|
|
|
|
|
|
# ShiftRow(a,0,BC); |
1466
|
|
|
|
|
|
|
# MixColumn(a,BC); |
1467
|
|
|
|
|
|
|
# KeyAddition(a,rk[r],BC); |
1468
|
|
|
|
|
|
|
# } |
1469
|
0
|
|
0
|
|
|
0
|
for ($r = 1; $r <= $rounds and $r < $ROUNDS; $r++) { |
1470
|
0
|
|
|
|
|
0
|
Substitution(@a,@S,$BC); |
1471
|
0
|
|
|
|
|
0
|
ShiftRow(@a,0,$BC); |
1472
|
0
|
|
|
|
|
0
|
MixColumn(@a,$BC); |
1473
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[$r],$BC); |
1474
|
|
|
|
|
|
|
} |
1475
|
|
|
|
|
|
|
# |
1476
|
|
|
|
|
|
|
# /* if necessary, do the last, special, round: |
1477
|
|
|
|
|
|
|
# */ |
1478
|
|
|
|
|
|
|
# if (rounds == ROUNDS) { |
1479
|
|
|
|
|
|
|
# Substitution(a,S,BC); |
1480
|
|
|
|
|
|
|
# ShiftRow(a,0,BC); |
1481
|
|
|
|
|
|
|
# KeyAddition(a,rk[ROUNDS],BC); |
1482
|
|
|
|
|
|
|
# } |
1483
|
|
|
|
|
|
|
|
1484
|
0
|
0
|
|
|
|
0
|
if ($rounds == $ROUNDS) { |
1485
|
0
|
|
|
|
|
0
|
Substitution(@a,@S,$BC); |
1486
|
0
|
|
|
|
|
0
|
ShiftRow(@a,0,$BC); |
1487
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[$ROUNDS],$BC); |
1488
|
|
|
|
|
|
|
} |
1489
|
|
|
|
|
|
|
|
1490
|
|
|
|
|
|
|
# |
1491
|
|
|
|
|
|
|
# return 0; |
1492
|
|
|
|
|
|
|
|
1493
|
0
|
|
|
|
|
0
|
@_[0..3] = @a; |
1494
|
|
|
|
|
|
|
|
1495
|
0
|
|
|
|
|
0
|
return 0; |
1496
|
|
|
|
|
|
|
#} |
1497
|
|
|
|
|
|
|
|
1498
|
|
|
|
|
|
|
} |
1499
|
|
|
|
|
|
|
|
1500
|
|
|
|
|
|
|
|
1501
|
|
|
|
|
|
|
|
1502
|
|
|
|
|
|
|
|
1503
|
|
|
|
|
|
|
#int rijndaelDecrypt (word8 a[4][MAXBC], int keyBits, int blockBits, word8 rk[MAXROUNDS+1][4][MAXBC]) |
1504
|
|
|
|
|
|
|
#{ |
1505
|
|
|
|
|
|
|
# int r, BC, ROUNDS; |
1506
|
|
|
|
|
|
|
|
1507
|
|
|
|
|
|
|
sub rijndaelDecrypt (@) { |
1508
|
|
|
|
|
|
|
|
1509
|
2005
|
|
|
2005
|
0
|
7907
|
my @a = @_[0..3]; |
1510
|
2005
|
|
|
|
|
2845
|
my $keyBits = $_[4]; |
1511
|
2005
|
|
|
|
|
2916
|
my $blockBits = $_[5]; |
1512
|
2005
|
|
|
|
|
2886
|
my $rk = $_[6]; |
1513
|
|
|
|
|
|
|
|
1514
|
2005
|
|
|
|
|
3876
|
my $r; |
1515
|
|
|
|
|
|
|
|
1516
|
|
|
|
|
|
|
# |
1517
|
|
|
|
|
|
|
# switch (blockBits) { |
1518
|
|
|
|
|
|
|
# case 128: BC = 4; break; |
1519
|
|
|
|
|
|
|
# case 192: BC = 6; break; |
1520
|
|
|
|
|
|
|
# case 256: BC = 8; break; |
1521
|
|
|
|
|
|
|
# default : return (-2); |
1522
|
|
|
|
|
|
|
# } |
1523
|
|
|
|
|
|
|
# |
1524
|
|
|
|
|
|
|
# switch (keyBits >= blockBits ? keyBits : blockBits) { |
1525
|
|
|
|
|
|
|
# case 128: ROUNDS = 10; break; |
1526
|
|
|
|
|
|
|
# case 192: ROUNDS = 12; break; |
1527
|
|
|
|
|
|
|
# case 256: ROUNDS = 14; break; |
1528
|
|
|
|
|
|
|
# default : return (-3); /* this cannot happen */ |
1529
|
|
|
|
|
|
|
# } |
1530
|
|
|
|
|
|
|
|
1531
|
2005
|
50
|
|
|
|
4675
|
my $BC = $blockBits == 128 ? 4 : $blockBits == 192 ? 6 : $blockBits == 256 ? 8 : return -2; |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1532
|
|
|
|
|
|
|
|
1533
|
2005
|
|
|
|
|
2668
|
my $ROUNDS; |
1534
|
|
|
|
|
|
|
{ |
1535
|
2005
|
100
|
|
|
|
2640
|
my $tmp = $keyBits >= $blockBits ? $keyBits : $blockBits; |
|
2005
|
|
|
|
|
4598
|
|
1536
|
2005
|
50
|
|
|
|
10229
|
$ROUNDS = $tmp == 128 ? 10 : $tmp == 192 ? 12 : $tmp == 256 ? 14 : return -3; # this cannot happen |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
1537
|
|
|
|
|
|
|
} |
1538
|
|
|
|
|
|
|
|
1539
|
|
|
|
|
|
|
# |
1540
|
|
|
|
|
|
|
# /* To decrypt: apply the inverse operations of the encrypt routine, |
1541
|
|
|
|
|
|
|
# * in opposite order |
1542
|
|
|
|
|
|
|
# * |
1543
|
|
|
|
|
|
|
# * (KeyAddition is an involution: it 's equal to its inverse) |
1544
|
|
|
|
|
|
|
# * (the inverse of Substitution with table S is Substitution with the inverse table of S) |
1545
|
|
|
|
|
|
|
# * (the inverse of Shiftrow is Shiftrow over a suitable distance) |
1546
|
|
|
|
|
|
|
# */ |
1547
|
|
|
|
|
|
|
# |
1548
|
|
|
|
|
|
|
# /* First the special round: |
1549
|
|
|
|
|
|
|
# * without InvMixColumn |
1550
|
|
|
|
|
|
|
# * with extra KeyAddition |
1551
|
|
|
|
|
|
|
# */ |
1552
|
|
|
|
|
|
|
# KeyAddition(a,rk[ROUNDS],BC); |
1553
|
|
|
|
|
|
|
# Substitution(a,Si,BC); |
1554
|
|
|
|
|
|
|
# ShiftRow(a,1,BC); |
1555
|
|
|
|
|
|
|
|
1556
|
2005
|
|
|
|
|
6008
|
KeyAddition(@a,$rk->[$ROUNDS],$BC); |
1557
|
2005
|
|
|
|
|
11474
|
Substitution(@a,@Si,$BC); |
1558
|
2005
|
|
|
|
|
4741
|
ShiftRow(@a,1,$BC); |
1559
|
|
|
|
|
|
|
|
1560
|
|
|
|
|
|
|
# |
1561
|
|
|
|
|
|
|
# /* ROUNDS-1 ordinary rounds |
1562
|
|
|
|
|
|
|
# */ |
1563
|
|
|
|
|
|
|
# for(r = ROUNDS-1; r > 0; r--) { |
1564
|
|
|
|
|
|
|
# KeyAddition(a,rk[r],BC); |
1565
|
|
|
|
|
|
|
# InvMixColumn(a,BC); |
1566
|
|
|
|
|
|
|
# Substitution(a,Si,BC); |
1567
|
|
|
|
|
|
|
# ShiftRow(a,1,BC); |
1568
|
|
|
|
|
|
|
# } |
1569
|
|
|
|
|
|
|
|
1570
|
2005
|
|
|
|
|
6291
|
for ($r = $ROUNDS-1; $r > 0; $r--) { |
1571
|
26055
|
|
|
|
|
62517
|
KeyAddition(@a,$rk->[$r],$BC); |
1572
|
26055
|
|
|
|
|
62980
|
InvMixColumn(@a,$BC); |
1573
|
26055
|
|
|
|
|
157405
|
Substitution(@a,@Si,$BC); |
1574
|
26055
|
|
|
|
|
66123
|
ShiftRow(@a,1,$BC); |
1575
|
|
|
|
|
|
|
} |
1576
|
|
|
|
|
|
|
# |
1577
|
|
|
|
|
|
|
# /* End with the extra key addition |
1578
|
|
|
|
|
|
|
# */ |
1579
|
|
|
|
|
|
|
# |
1580
|
|
|
|
|
|
|
# KeyAddition(a,rk[0],BC); |
1581
|
|
|
|
|
|
|
|
1582
|
2005
|
|
|
|
|
6037
|
KeyAddition(@a,$rk->[0],$BC); |
1583
|
|
|
|
|
|
|
|
1584
|
|
|
|
|
|
|
# |
1585
|
|
|
|
|
|
|
# return 0; |
1586
|
|
|
|
|
|
|
#} |
1587
|
|
|
|
|
|
|
|
1588
|
2005
|
|
|
|
|
7127
|
@_[0..3] = @a; |
1589
|
|
|
|
|
|
|
|
1590
|
2005
|
|
|
|
|
5618
|
return 0; |
1591
|
|
|
|
|
|
|
} |
1592
|
|
|
|
|
|
|
|
1593
|
|
|
|
|
|
|
|
1594
|
|
|
|
|
|
|
#int rijndaelDecryptRound (word8 a[4][MAXBC], int keyBits, int blockBits, |
1595
|
|
|
|
|
|
|
# word8 rk[MAXROUNDS+1][4][MAXBC], int rounds) |
1596
|
|
|
|
|
|
|
#/* Decrypt only a certain number of rounds. |
1597
|
|
|
|
|
|
|
# * Only used in the Intermediate Value Known Answer Test. |
1598
|
|
|
|
|
|
|
# * Operations rearranged such that the intermediate values |
1599
|
|
|
|
|
|
|
# * of decryption correspond with the intermediate values |
1600
|
|
|
|
|
|
|
# * of encryption. |
1601
|
|
|
|
|
|
|
# */ |
1602
|
|
|
|
|
|
|
#{ |
1603
|
|
|
|
|
|
|
# int r, BC, ROUNDS; |
1604
|
|
|
|
|
|
|
|
1605
|
|
|
|
|
|
|
sub rijndaelDecryptRound (@) { |
1606
|
|
|
|
|
|
|
|
1607
|
0
|
|
|
0
|
0
|
0
|
my @a = @_[0..3]; |
1608
|
0
|
|
|
|
|
0
|
my $keyBits = $_[4]; |
1609
|
0
|
|
|
|
|
0
|
my $blockBits = $_[5]; |
1610
|
0
|
|
|
|
|
0
|
my $rk = $_[6]; |
1611
|
0
|
|
|
|
|
0
|
my $rounds = $_[7]; |
1612
|
|
|
|
|
|
|
|
1613
|
0
|
|
|
|
|
0
|
my $r; |
1614
|
|
|
|
|
|
|
|
1615
|
|
|
|
|
|
|
# |
1616
|
|
|
|
|
|
|
# switch (blockBits) { |
1617
|
|
|
|
|
|
|
# case 128: BC = 4; break; |
1618
|
|
|
|
|
|
|
# case 192: BC = 6; break; |
1619
|
|
|
|
|
|
|
# case 256: BC = 8; break; |
1620
|
|
|
|
|
|
|
# default : return (-2); |
1621
|
|
|
|
|
|
|
# } |
1622
|
|
|
|
|
|
|
# |
1623
|
|
|
|
|
|
|
# switch (keyBits >= blockBits ? keyBits : blockBits) { |
1624
|
|
|
|
|
|
|
# case 128: ROUNDS = 10; break; |
1625
|
|
|
|
|
|
|
# case 192: ROUNDS = 12; break; |
1626
|
|
|
|
|
|
|
# case 256: ROUNDS = 14; break; |
1627
|
|
|
|
|
|
|
# default : return (-3); /* this cannot happen */ |
1628
|
|
|
|
|
|
|
# } |
1629
|
|
|
|
|
|
|
# |
1630
|
|
|
|
|
|
|
|
1631
|
0
|
0
|
|
|
|
0
|
my $BC = $blockBits == 128 ? 4 : $blockBits == 192 ? 6 : $blockBits == 256 ? 8 : return -2; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
1632
|
|
|
|
|
|
|
|
1633
|
0
|
|
|
|
|
0
|
my $ROUNDS; |
1634
|
|
|
|
|
|
|
{ |
1635
|
0
|
0
|
|
|
|
0
|
my $tmp = $keyBits >= $blockBits ? $keyBits : $blockBits; |
|
0
|
|
|
|
|
0
|
|
1636
|
0
|
0
|
|
|
|
0
|
$ROUNDS = $tmp == 128 ? 10 : $tmp == 192 ? 12 : $tmp == 256 ? 14 : return -3; # this cannot happen |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
1637
|
|
|
|
|
|
|
} |
1638
|
|
|
|
|
|
|
|
1639
|
|
|
|
|
|
|
|
1640
|
|
|
|
|
|
|
|
1641
|
|
|
|
|
|
|
# |
1642
|
|
|
|
|
|
|
# /* make number of rounds sane */ |
1643
|
|
|
|
|
|
|
# if (rounds > ROUNDS) rounds = ROUNDS; |
1644
|
|
|
|
|
|
|
|
1645
|
0
|
0
|
|
|
|
0
|
$rounds = $ROUNDS if $rounds > $ROUNDS; |
1646
|
|
|
|
|
|
|
|
1647
|
|
|
|
|
|
|
# |
1648
|
|
|
|
|
|
|
# /* First the special round: |
1649
|
|
|
|
|
|
|
# * without InvMixColumn |
1650
|
|
|
|
|
|
|
# * with extra KeyAddition |
1651
|
|
|
|
|
|
|
# */ |
1652
|
|
|
|
|
|
|
# KeyAddition(a,rk[ROUNDS],BC); |
1653
|
|
|
|
|
|
|
# Substitution(a,Si,BC); |
1654
|
|
|
|
|
|
|
# ShiftRow(a,1,BC); |
1655
|
|
|
|
|
|
|
|
1656
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[$ROUNDS],$BC); |
1657
|
0
|
|
|
|
|
0
|
Substitution(@a,@Si,$BC); |
1658
|
0
|
|
|
|
|
0
|
ShiftRow(@a,1,$BC); |
1659
|
|
|
|
|
|
|
|
1660
|
|
|
|
|
|
|
|
1661
|
|
|
|
|
|
|
# |
1662
|
|
|
|
|
|
|
# /* ROUNDS-1 ordinary rounds |
1663
|
|
|
|
|
|
|
# */ |
1664
|
|
|
|
|
|
|
# for(r = ROUNDS-1; r > rounds; r--) { |
1665
|
|
|
|
|
|
|
# KeyAddition(a,rk[r],BC); |
1666
|
|
|
|
|
|
|
# InvMixColumn(a,BC); |
1667
|
|
|
|
|
|
|
# Substitution(a,Si,BC); |
1668
|
|
|
|
|
|
|
# ShiftRow(a,1,BC); |
1669
|
|
|
|
|
|
|
# } |
1670
|
|
|
|
|
|
|
|
1671
|
0
|
|
|
|
|
0
|
for ($r = $ROUNDS-1; $r > $rounds; $r--) { |
1672
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[$r],$BC); |
1673
|
0
|
|
|
|
|
0
|
InvMixColumn(@a,$BC); |
1674
|
0
|
|
|
|
|
0
|
Substitution(@a,@Si,$BC); |
1675
|
0
|
|
|
|
|
0
|
ShiftRow(@a,1,$BC); |
1676
|
|
|
|
|
|
|
} |
1677
|
|
|
|
|
|
|
|
1678
|
|
|
|
|
|
|
|
1679
|
|
|
|
|
|
|
# |
1680
|
|
|
|
|
|
|
# if (rounds == 0) { |
1681
|
|
|
|
|
|
|
# /* End with the extra key addition |
1682
|
|
|
|
|
|
|
# */ |
1683
|
|
|
|
|
|
|
# KeyAddition(a,rk[0],BC); |
1684
|
|
|
|
|
|
|
# } |
1685
|
|
|
|
|
|
|
|
1686
|
0
|
0
|
|
|
|
0
|
if ($rounds == 0) { |
1687
|
0
|
|
|
|
|
0
|
KeyAddition(@a,$rk->[0],$BC); |
1688
|
|
|
|
|
|
|
} |
1689
|
|
|
|
|
|
|
|
1690
|
|
|
|
|
|
|
# |
1691
|
|
|
|
|
|
|
# return 0; |
1692
|
|
|
|
|
|
|
#} |
1693
|
|
|
|
|
|
|
|
1694
|
0
|
|
|
|
|
0
|
@_[0..3] = @a; |
1695
|
|
|
|
|
|
|
|
1696
|
0
|
|
|
|
|
0
|
return 0 |
1697
|
|
|
|
|
|
|
} |
1698
|
|
|
|
|
|
|
|
1699
|
|
|
|
|
|
|
|
1700
|
|
|
|
|
|
|
|
1701
|
|
|
|
|
|
|
|
1702
|
|
|
|
|
|
|
|
1703
|
|
|
|
|
|
|
################################## |
1704
|
|
|
|
|
|
|
# api-ref.c |
1705
|
|
|
|
|
|
|
|
1706
|
|
|
|
|
|
|
# define DIR_ENCRYPT 0 /* Are we encrpyting? */ |
1707
|
|
|
|
|
|
|
sub DIR_ENCRYPT() { 0 } |
1708
|
|
|
|
|
|
|
# define DIR_DECRYPT 1 /* Are we decrpyting? */ |
1709
|
|
|
|
|
|
|
sub DIR_DECRYPT() { 1 } |
1710
|
|
|
|
|
|
|
# define MODE_ECB 1 /* Are we ciphering in ECB mode? */ |
1711
|
|
|
|
|
|
|
sub MODE_ECB() { 1 } |
1712
|
|
|
|
|
|
|
# define MODE_CBC 2 /* Are we ciphering in CBC mode? */ |
1713
|
|
|
|
|
|
|
sub MODE_CBC() { 2 } |
1714
|
|
|
|
|
|
|
# define MODE_CFB1 3 /* Are we ciphering in 1-bit CFB mode? */ |
1715
|
|
|
|
|
|
|
sub MODE_CFB1() { 3 } |
1716
|
|
|
|
|
|
|
# define TRUE 1 |
1717
|
|
|
|
|
|
|
sub TRUE() { 1 } |
1718
|
|
|
|
|
|
|
# define FALSE 0 |
1719
|
|
|
|
|
|
|
sub FALSE() { 0 } |
1720
|
|
|
|
|
|
|
# define BITSPERBLOCK 128 /* Default number of bits in a cipher block */ |
1721
|
|
|
|
|
|
|
sub BITSPERBLOCK() { 128 } |
1722
|
|
|
|
|
|
|
|
1723
|
|
|
|
|
|
|
# /* Error Codes - CHANGE POSSIBLE: inclusion of additional error codes */ |
1724
|
|
|
|
|
|
|
#define BAD_KEY_DIR -1 /* Key direction is invalid, e.g., unknown value */ |
1725
|
|
|
|
|
|
|
#define BAD_KEY_MAT -2 /* Key material not of correct length */ |
1726
|
|
|
|
|
|
|
#define BAD_KEY_INSTANCE -3 /* Key passed is not valid */ |
1727
|
|
|
|
|
|
|
#define BAD_CIPHER_MODE -4 /* Params struct passed to cipherInit invalid */ |
1728
|
|
|
|
|
|
|
#define BAD_CIPHER_STATE -5 /* Cipher in wrong state (e.g., not initialized) */ |
1729
|
|
|
|
|
|
|
#define BAD_CIPHER_INSTANCE -7 |
1730
|
|
|
|
|
|
|
|
1731
|
|
|
|
|
|
|
# /* CHANGE POSSIBLE: inclusion of algorithm specific defines */ |
1732
|
|
|
|
|
|
|
#define MAX_KEY_SIZE 64 /* # of ASCII char's needed to represent a key */ |
1733
|
|
|
|
|
|
|
sub MAX_KEY_SIZE() { 64 } |
1734
|
|
|
|
|
|
|
#define MAX_IV_SIZE BITSPERBLOCK/8 /* # bytes needed to represent an IV */ |
1735
|
|
|
|
|
|
|
sub MAX_IV_SIZE() { BITSPERBLOCK/8 } |
1736
|
|
|
|
|
|
|
|
1737
|
|
|
|
|
|
|
|
1738
|
|
|
|
|
|
|
|
1739
|
|
|
|
|
|
|
#int makeKey(keyInstance *key, BYTE direction, int keyLen, char *keyMaterial) |
1740
|
|
|
|
|
|
|
#{ |
1741
|
|
|
|
|
|
|
# word8 k[4][MAXKC]; |
1742
|
|
|
|
|
|
|
# int i, j, t; |
1743
|
|
|
|
|
|
|
|
1744
|
|
|
|
|
|
|
sub makeKey($$$$) { |
1745
|
|
|
|
|
|
|
|
1746
|
438
|
|
|
438
|
0
|
926
|
my ($key, $direction, $keyLen, $keyMaterial) = @_; |
1747
|
|
|
|
|
|
|
|
1748
|
|
|
|
|
|
|
#$keyLen = length $keyMaterial; # hey, it's perl :-) |
1749
|
|
|
|
|
|
|
|
1750
|
438
|
|
|
|
|
572
|
my @k; |
1751
|
|
|
|
|
|
|
|
1752
|
|
|
|
|
|
|
# |
1753
|
|
|
|
|
|
|
# if (key == NULL) { |
1754
|
|
|
|
|
|
|
# return BAD_KEY_INSTANCE; |
1755
|
|
|
|
|
|
|
# } |
1756
|
|
|
|
|
|
|
|
1757
|
438
|
50
|
33
|
|
|
3113
|
unless ( defined $key and ref $key eq 'HASH') { |
1758
|
0
|
|
|
|
|
0
|
die "BAD_KEY_INSTANCE"; |
1759
|
|
|
|
|
|
|
} |
1760
|
|
|
|
|
|
|
|
1761
|
|
|
|
|
|
|
# |
1762
|
|
|
|
|
|
|
# if ((direction == DIR_ENCRYPT) || (direction == DIR_DECRYPT)) { |
1763
|
|
|
|
|
|
|
# key->direction = direction; |
1764
|
|
|
|
|
|
|
# } else { |
1765
|
|
|
|
|
|
|
# return BAD_KEY_DIR; |
1766
|
|
|
|
|
|
|
# } |
1767
|
|
|
|
|
|
|
|
1768
|
438
|
50
|
66
|
|
|
1767
|
if ($direction == DIR_ENCRYPT or $direction == DIR_DECRYPT) { |
1769
|
438
|
|
|
|
|
1174
|
$key->{direction} = $direction |
1770
|
|
|
|
|
|
|
} else { |
1771
|
0
|
|
|
|
|
0
|
die "BAD_KEY_DIR"; |
1772
|
|
|
|
|
|
|
} |
1773
|
|
|
|
|
|
|
|
1774
|
|
|
|
|
|
|
# |
1775
|
|
|
|
|
|
|
# if ((keyLen == 128) || (keyLen == 192) || (keyLen == 256)) { |
1776
|
|
|
|
|
|
|
# key->keyLen = keyLen; |
1777
|
|
|
|
|
|
|
# } else { |
1778
|
|
|
|
|
|
|
# return BAD_KEY_MAT; |
1779
|
|
|
|
|
|
|
# } |
1780
|
|
|
|
|
|
|
|
1781
|
438
|
50
|
100
|
|
|
3693
|
if ($keyLen == 128 or $keyLen == 192 or $keyLen == 256) { |
|
|
|
66
|
|
|
|
|
1782
|
438
|
|
|
|
|
1070
|
$key->{keyLen} = $keyLen |
1783
|
|
|
|
|
|
|
} else { |
1784
|
0
|
|
|
|
|
0
|
die "BAD_KEY_MAT"; |
1785
|
|
|
|
|
|
|
} |
1786
|
|
|
|
|
|
|
|
1787
|
|
|
|
|
|
|
# |
1788
|
|
|
|
|
|
|
# if ( keyMaterial ) { |
1789
|
|
|
|
|
|
|
# strncpy(key->keyMaterial, keyMaterial, keyLen/4); |
1790
|
|
|
|
|
|
|
# } |
1791
|
|
|
|
|
|
|
|
1792
|
438
|
50
|
|
|
|
1087
|
if (defined $keyMaterial) { |
1793
|
438
|
|
|
|
|
1464
|
$key->{keyMaterial} = substr ($keyMaterial,0,$keyLen/4) |
1794
|
|
|
|
|
|
|
} |
1795
|
|
|
|
|
|
|
|
1796
|
|
|
|
|
|
|
# |
1797
|
|
|
|
|
|
|
# /* initialize key schedule: */ |
1798
|
|
|
|
|
|
|
# for(i = 0; i < key->keyLen/8; i++) { |
1799
|
|
|
|
|
|
|
# t = key->keyMaterial[2*i]; |
1800
|
|
|
|
|
|
|
# if ((t >= '0') && (t <= '9')) j = (t - '0') << 4; |
1801
|
|
|
|
|
|
|
# else if ((t >= 'a') && (t <= 'f')) j = (t - 'a' + 10) << 4; |
1802
|
|
|
|
|
|
|
# else if ((t >= 'A') && (t <= 'F')) j = (t - 'A' + 10) << 4; |
1803
|
|
|
|
|
|
|
# else return BAD_KEY_MAT; |
1804
|
|
|
|
|
|
|
# |
1805
|
|
|
|
|
|
|
# t = key->keyMaterial[2*i+1]; |
1806
|
|
|
|
|
|
|
# if ((t >= '0') && (t <= '9')) j ^= (t - '0'); |
1807
|
|
|
|
|
|
|
# else if ((t >= 'a') && (t <= 'f')) j ^= (t - 'a' + 10); |
1808
|
|
|
|
|
|
|
# else if ((t >= 'A') && (t <= 'F')) j ^= (t - 'A' + 10); |
1809
|
|
|
|
|
|
|
# else return BAD_KEY_MAT; |
1810
|
|
|
|
|
|
|
# |
1811
|
|
|
|
|
|
|
# k[i % 4][i / 4] = (word8) j; |
1812
|
|
|
|
|
|
|
# } |
1813
|
|
|
|
|
|
|
|
1814
|
438
|
|
|
|
|
602
|
my $i; |
1815
|
438
|
|
|
|
|
8053
|
my @keyMaterial = unpack 'A2'x(length($key->{keyMaterial})/2), $key->{keyMaterial}; |
1816
|
438
|
|
|
|
|
1615
|
for $i (0..$keyLen/8-1) { |
1817
|
13872
|
|
|
|
|
23246
|
$k[$i % 4][$i / 4] = hex $keyMaterial[$i]; |
1818
|
|
|
|
|
|
|
} |
1819
|
|
|
|
|
|
|
# |
1820
|
|
|
|
|
|
|
# rijndaelKeySched (k, key->keyLen, key->blockLen, key->keySched); |
1821
|
|
|
|
|
|
|
|
1822
|
|
|
|
|
|
|
#my @W; |
1823
|
|
|
|
|
|
|
#rijndaelKeySched(@k, $key->{keyLen}, $key->{blockLen}, @W); |
1824
|
|
|
|
|
|
|
|
1825
|
438
|
|
|
|
|
2982
|
rijndaelKeySched(@k, $key->{keyLen}, $key->{blockLen}, $key->{keySched}); |
1826
|
|
|
|
|
|
|
|
1827
|
|
|
|
|
|
|
|
1828
|
|
|
|
|
|
|
# $key->{keySched} = \@W; |
1829
|
|
|
|
|
|
|
|
1830
|
|
|
|
|
|
|
# |
1831
|
|
|
|
|
|
|
# return TRUE; |
1832
|
|
|
|
|
|
|
#} |
1833
|
438
|
|
|
|
|
1052
|
$_[0] = $key; |
1834
|
|
|
|
|
|
|
|
1835
|
438
|
|
|
|
|
6096
|
return TRUE; |
1836
|
|
|
|
|
|
|
} |
1837
|
|
|
|
|
|
|
|
1838
|
|
|
|
|
|
|
|
1839
|
|
|
|
|
|
|
|
1840
|
|
|
|
|
|
|
#int cipherInit(cipherInstance *cipher, BYTE mode, char *IV) |
1841
|
|
|
|
|
|
|
#{ |
1842
|
|
|
|
|
|
|
# int i, j, t; |
1843
|
|
|
|
|
|
|
|
1844
|
|
|
|
|
|
|
sub cipherInit($$;$) { |
1845
|
|
|
|
|
|
|
|
1846
|
428
|
|
|
428
|
0
|
1026
|
my ($cipher, $mode, $IV) = @_; |
1847
|
|
|
|
|
|
|
|
1848
|
428
|
|
|
|
|
491
|
my $i; |
1849
|
|
|
|
|
|
|
|
1850
|
|
|
|
|
|
|
# |
1851
|
|
|
|
|
|
|
# if ((mode == MODE_ECB) || (mode == MODE_CBC) || (mode == MODE_CFB1)) { |
1852
|
|
|
|
|
|
|
# cipher->mode = mode; |
1853
|
|
|
|
|
|
|
# } else { |
1854
|
|
|
|
|
|
|
# return BAD_CIPHER_MODE; |
1855
|
|
|
|
|
|
|
# } |
1856
|
|
|
|
|
|
|
|
1857
|
428
|
50
|
66
|
|
|
2696
|
if ($mode == MODE_ECB or $mode == MODE_CBC or $mode == MODE_CFB1) { |
|
|
|
33
|
|
|
|
|
1858
|
428
|
|
|
|
|
1264
|
$cipher->{mode} = $mode |
1859
|
|
|
|
|
|
|
} else { |
1860
|
0
|
|
|
|
|
0
|
die "BAD_CIPHER_MODE"; |
1861
|
|
|
|
|
|
|
} |
1862
|
|
|
|
|
|
|
|
1863
|
|
|
|
|
|
|
# |
1864
|
|
|
|
|
|
|
# if (IV != NULL) { |
1865
|
|
|
|
|
|
|
# for(i = 0; i < cipher->blockLen/8; i++) { |
1866
|
|
|
|
|
|
|
# t = IV[2*i]; |
1867
|
|
|
|
|
|
|
# if ((t >= '0') && (t <= '9')) j = (t - '0') << 4; |
1868
|
|
|
|
|
|
|
# else if ((t >= 'a') && (t <= 'f')) j = (t - 'a' + 10) << 4; |
1869
|
|
|
|
|
|
|
# else if ((t >= 'A') && (t <= 'F')) j = (t - 'A' + 10) << 4; |
1870
|
|
|
|
|
|
|
# else return BAD_CIPHER_INSTANCE; |
1871
|
|
|
|
|
|
|
# |
1872
|
|
|
|
|
|
|
# t = IV[2*i+1]; |
1873
|
|
|
|
|
|
|
# if ((t >= '0') && (t <= '9')) j ^= (t - '0'); |
1874
|
|
|
|
|
|
|
# else if ((t >= 'a') && (t <= 'f')) j ^= (t - 'a' + 10); |
1875
|
|
|
|
|
|
|
# else if ((t >= 'A') && (t <= 'F')) j ^= (t - 'A' + 10); |
1876
|
|
|
|
|
|
|
# else return BAD_CIPHER_INSTANCE; |
1877
|
|
|
|
|
|
|
# |
1878
|
|
|
|
|
|
|
# cipher->IV[i] = (BYTE) j; |
1879
|
|
|
|
|
|
|
# } |
1880
|
|
|
|
|
|
|
# } |
1881
|
|
|
|
|
|
|
|
1882
|
428
|
50
|
|
|
|
976
|
if (defined $IV) { |
1883
|
|
|
|
|
|
|
# my @block = unpack 'C'x(length $IV), $IV; |
1884
|
|
|
|
|
|
|
# for $i (0..$cipher->{blockLen}/8-1) { |
1885
|
|
|
|
|
|
|
# $cipher->{IV}[$i] = $block[$i]; |
1886
|
|
|
|
|
|
|
# } |
1887
|
428
|
|
|
|
|
6379
|
$cipher->{IV} = [ unpack 'C'x(length $IV), $IV ] |
1888
|
|
|
|
|
|
|
} |
1889
|
|
|
|
|
|
|
|
1890
|
|
|
|
|
|
|
# |
1891
|
|
|
|
|
|
|
# return TRUE; |
1892
|
|
|
|
|
|
|
#} |
1893
|
|
|
|
|
|
|
|
1894
|
428
|
|
|
|
|
916
|
$_[0] = $cipher; |
1895
|
428
|
|
|
|
|
818
|
return TRUE; |
1896
|
|
|
|
|
|
|
} |
1897
|
|
|
|
|
|
|
|
1898
|
|
|
|
|
|
|
|
1899
|
|
|
|
|
|
|
|
1900
|
|
|
|
|
|
|
|
1901
|
|
|
|
|
|
|
#int blockEncrypt(cipherInstance *cipher, |
1902
|
|
|
|
|
|
|
# keyInstance *key, BYTE *input, int inputLen, BYTE *outBuffer) |
1903
|
|
|
|
|
|
|
#{ |
1904
|
|
|
|
|
|
|
# int i, j, t, numBlocks; |
1905
|
|
|
|
|
|
|
# word8 block[4][MAXBC]; |
1906
|
|
|
|
|
|
|
|
1907
|
|
|
|
|
|
|
sub blockEncrypt($$$$$) { |
1908
|
|
|
|
|
|
|
|
1909
|
2005
|
|
|
2005
|
0
|
3601
|
my ($cipher, $key, $input, $inputLen, $outBuffer) = @_; |
1910
|
|
|
|
|
|
|
|
1911
|
2005
|
|
|
|
|
2520
|
my ($i,$j,$t,$numBlocks,@block); |
1912
|
|
|
|
|
|
|
|
1913
|
|
|
|
|
|
|
# |
1914
|
|
|
|
|
|
|
# |
1915
|
|
|
|
|
|
|
# /* check parameter consistency: */ |
1916
|
|
|
|
|
|
|
# if (key == NULL || |
1917
|
|
|
|
|
|
|
# key->direction != DIR_ENCRYPT || |
1918
|
|
|
|
|
|
|
# (key->keyLen != 128 && key->keyLen != 192 && key->keyLen != 256)) { |
1919
|
|
|
|
|
|
|
# return BAD_KEY_MAT; |
1920
|
|
|
|
|
|
|
# } |
1921
|
|
|
|
|
|
|
|
1922
|
2005
|
50
|
33
|
|
|
30293
|
if (not defined $key or $key->{direction} != DIR_ENCRYPT or |
|
|
|
100
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
|
33
|
|
|
|
|
1923
|
|
|
|
|
|
|
($key->{keyLen} != 128 and $key->{keyLen} != 192 and $key->{keyLen} != 256)) { |
1924
|
0
|
|
|
|
|
0
|
die "BAD_KEY_MAT" |
1925
|
|
|
|
|
|
|
} |
1926
|
|
|
|
|
|
|
|
1927
|
|
|
|
|
|
|
# if (cipher == NULL || |
1928
|
|
|
|
|
|
|
# (cipher->mode != MODE_ECB && cipher->mode != MODE_CBC && cipher->mode != MODE_CFB1) || |
1929
|
|
|
|
|
|
|
# (cipher->blockLen != 128 && cipher->blockLen != 192 && cipher->blockLen != 256)) { |
1930
|
|
|
|
|
|
|
# return BAD_CIPHER_STATE; |
1931
|
|
|
|
|
|
|
# } |
1932
|
|
|
|
|
|
|
|
1933
|
2005
|
50
|
66
|
|
|
19368
|
if (not defined $cipher or ($cipher->{mode} != MODE_ECB and $cipher->{mode} != MODE_CBC and $cipher->{mode} != MODE_CFB1) or |
|
|
|
33
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
|
33
|
|
|
|
|
1934
|
|
|
|
|
|
|
($cipher->{blockLen} != 128 and $cipher->{blockLen} != 192 and $cipher->{blockLen} != 256)) { |
1935
|
0
|
|
|
|
|
0
|
die "BAD_CIPHER_STATE"; |
1936
|
|
|
|
|
|
|
} |
1937
|
|
|
|
|
|
|
|
1938
|
|
|
|
|
|
|
# |
1939
|
|
|
|
|
|
|
# |
1940
|
|
|
|
|
|
|
# numBlocks = inputLen/cipher->blockLen; |
1941
|
|
|
|
|
|
|
|
1942
|
2005
|
|
|
|
|
3636
|
$numBlocks = $inputLen/$cipher->{blockLen}; |
1943
|
|
|
|
|
|
|
|
1944
|
|
|
|
|
|
|
# |
1945
|
|
|
|
|
|
|
# switch (cipher->mode) { |
1946
|
|
|
|
|
|
|
# case MODE_ECB: |
1947
|
|
|
|
|
|
|
# for (i = 0; i < numBlocks; i++) { |
1948
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
1949
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
1950
|
|
|
|
|
|
|
# /* parse input stream into rectangular array */ |
1951
|
|
|
|
|
|
|
# block[t][j] = input[4*j+t] & 0xFF; |
1952
|
|
|
|
|
|
|
# } |
1953
|
|
|
|
|
|
|
# rijndaelEncrypt (block, key->keyLen, cipher->blockLen, key->keySched); |
1954
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
1955
|
|
|
|
|
|
|
# /* parse rectangular array into output ciphertext bytes */ |
1956
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
1957
|
|
|
|
|
|
|
# outBuffer[4*j+t] = (BYTE) block[t][j]; |
1958
|
|
|
|
|
|
|
# } |
1959
|
|
|
|
|
|
|
# } |
1960
|
|
|
|
|
|
|
# break; |
1961
|
|
|
|
|
|
|
|
1962
|
2005
|
100
|
|
|
|
6432
|
if ($cipher->{mode} == MODE_ECB) { |
|
|
50
|
|
|
|
|
|
1963
|
559
|
|
|
|
|
1053
|
for $i (0..$numBlocks-1) { |
1964
|
559
|
|
|
|
|
1103
|
for $j (0..$cipher->{blockLen}/32-1) { |
1965
|
2254
|
|
|
|
|
2892
|
for $t (0..3) { |
1966
|
9016
|
|
|
|
|
16669
|
$block[$t][$j] = $input->[4*$j+$t] & 0xFF; |
1967
|
|
|
|
|
|
|
} |
1968
|
|
|
|
|
|
|
} |
1969
|
559
|
|
|
|
|
2078
|
rijndaelEncrypt(@block, $key->{keyLen}, $cipher->{blockLen}, $key->{keySched}); |
1970
|
559
|
|
|
|
|
1802
|
for $j (0..$cipher->{blockLen}/32-1) { |
1971
|
2254
|
|
|
|
|
2812
|
for $t (0..3) { |
1972
|
9016
|
|
|
|
|
17364
|
$outBuffer->[4*$j+$t] = $block[$t][$j]; |
1973
|
|
|
|
|
|
|
} |
1974
|
|
|
|
|
|
|
} |
1975
|
|
|
|
|
|
|
} |
1976
|
|
|
|
|
|
|
} |
1977
|
|
|
|
|
|
|
|
1978
|
|
|
|
|
|
|
# |
1979
|
|
|
|
|
|
|
# case MODE_CBC: |
1980
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
1981
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
1982
|
|
|
|
|
|
|
# /* parse initial value into rectangular array */ |
1983
|
|
|
|
|
|
|
# block[t][j] = cipher->IV[t+4*j] & 0xFF; |
1984
|
|
|
|
|
|
|
# } |
1985
|
|
|
|
|
|
|
# for (i = 0; i < numBlocks; i++) { |
1986
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
1987
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
1988
|
|
|
|
|
|
|
# /* parse input stream into rectangular array and exor with |
1989
|
|
|
|
|
|
|
# IV or the previous ciphertext */ |
1990
|
|
|
|
|
|
|
# block[t][j] ^= input[4*j+t] & 0xFF; |
1991
|
|
|
|
|
|
|
# } |
1992
|
|
|
|
|
|
|
# rijndaelEncrypt (block, key->keyLen, cipher->blockLen, key->keySched); |
1993
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
1994
|
|
|
|
|
|
|
# /* parse rectangular array into output ciphertext bytes */ |
1995
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
1996
|
|
|
|
|
|
|
# outBuffer[4*j+t] = (BYTE) block[t][j]; |
1997
|
|
|
|
|
|
|
# } |
1998
|
|
|
|
|
|
|
# } |
1999
|
|
|
|
|
|
|
# break; |
2000
|
|
|
|
|
|
|
|
2001
|
|
|
|
|
|
|
elsif ($cipher->{mode} == MODE_CBC) { |
2002
|
1446
|
|
|
|
|
3751
|
for $j (0..$cipher->{blockLen}/32-1) { |
2003
|
5784
|
|
|
|
|
9533
|
for $t (0..3) { |
2004
|
23136
|
|
|
|
|
68246
|
$block[$t][$j] = $cipher->{IV}[$t+4*$j] & 0xFF |
2005
|
|
|
|
|
|
|
} |
2006
|
|
|
|
|
|
|
} |
2007
|
1446
|
|
|
|
|
3441
|
for $i (0..$numBlocks-1) { |
2008
|
1446
|
|
|
|
|
4337
|
for $j (0..$cipher->{blockLen}/32-1) { |
2009
|
5784
|
|
|
|
|
8089
|
for $t (0..3) { |
2010
|
23136
|
|
|
|
|
47338
|
$block[$t][$j] ^= $input->[4*$j+$t] & 0xFF; |
2011
|
|
|
|
|
|
|
} |
2012
|
|
|
|
|
|
|
} |
2013
|
1446
|
|
|
|
|
6557
|
rijndaelEncrypt(@block,$key->{keyLen},$cipher->{blockLen}, $key->{keySched}); |
2014
|
1446
|
|
|
|
|
5866
|
for $j (0..$cipher->{blockLen}/32-1) { |
2015
|
5784
|
|
|
|
|
8946
|
for $t (0..3) { |
2016
|
23136
|
|
|
|
|
63222
|
$outBuffer->[4*$j+$t] = $block[$t][$j]; |
2017
|
|
|
|
|
|
|
} |
2018
|
|
|
|
|
|
|
} |
2019
|
|
|
|
|
|
|
} |
2020
|
|
|
|
|
|
|
} |
2021
|
|
|
|
|
|
|
|
2022
|
|
|
|
|
|
|
# |
2023
|
|
|
|
|
|
|
# default: return BAD_CIPHER_STATE; |
2024
|
|
|
|
|
|
|
# } |
2025
|
|
|
|
|
|
|
|
2026
|
0
|
|
|
|
|
0
|
else { die "BAD_CIPHER_STATE" } |
2027
|
|
|
|
|
|
|
|
2028
|
|
|
|
|
|
|
# |
2029
|
|
|
|
|
|
|
# return numBlocks*cipher->blockLen; |
2030
|
|
|
|
|
|
|
#} |
2031
|
|
|
|
|
|
|
# @_ = ($cipher, $key, $input, $inputLen, $outBuffer); |
2032
|
2005
|
|
|
|
|
4703
|
$_[4] = $outBuffer; |
2033
|
|
|
|
|
|
|
|
2034
|
2005
|
|
|
|
|
23445
|
return $numBlocks * $cipher->{blockLen}; |
2035
|
|
|
|
|
|
|
} |
2036
|
|
|
|
|
|
|
|
2037
|
|
|
|
|
|
|
|
2038
|
|
|
|
|
|
|
|
2039
|
|
|
|
|
|
|
|
2040
|
|
|
|
|
|
|
#int blockDecrypt(cipherInstance *cipher, |
2041
|
|
|
|
|
|
|
# keyInstance *key, BYTE *input, int inputLen, BYTE *outBuffer) |
2042
|
|
|
|
|
|
|
#{ |
2043
|
|
|
|
|
|
|
# int i, j, t, numBlocks; |
2044
|
|
|
|
|
|
|
# word8 block[4][MAXBC]; |
2045
|
|
|
|
|
|
|
|
2046
|
|
|
|
|
|
|
sub blockDecrypt($$$$$) { |
2047
|
|
|
|
|
|
|
|
2048
|
2005
|
|
|
2005
|
0
|
4755
|
my ($cipher, $key, $input, $inputLen, $outBuffer) = @_; |
2049
|
|
|
|
|
|
|
|
2050
|
2005
|
|
|
|
|
3147
|
my ($i,$j,$t,$numBlocks,@block); |
2051
|
|
|
|
|
|
|
|
2052
|
|
|
|
|
|
|
# |
2053
|
|
|
|
|
|
|
# if (cipher == NULL || |
2054
|
|
|
|
|
|
|
# key == NULL || |
2055
|
|
|
|
|
|
|
# key->direction == DIR_ENCRYPT || |
2056
|
|
|
|
|
|
|
# cipher->blockLen != key->blockLen) { |
2057
|
|
|
|
|
|
|
# return BAD_CIPHER_STATE; |
2058
|
|
|
|
|
|
|
# } |
2059
|
|
|
|
|
|
|
|
2060
|
2005
|
50
|
33
|
|
|
40115
|
if (not defined $cipher or not defined $key or $key->{direction} == DIR_ENCRYPT or $cipher->{blockLen} != $key->{blockLen}) { |
|
|
|
33
|
|
|
|
|
|
|
|
33
|
|
|
|
|
2061
|
0
|
|
|
|
|
0
|
die "BAD_CIPHER_STATE"; |
2062
|
|
|
|
|
|
|
} |
2063
|
|
|
|
|
|
|
|
2064
|
|
|
|
|
|
|
|
2065
|
|
|
|
|
|
|
# |
2066
|
|
|
|
|
|
|
# /* check parameter consistency: */ |
2067
|
|
|
|
|
|
|
# if (key == NULL || |
2068
|
|
|
|
|
|
|
# key->direction != DIR_DECRYPT || |
2069
|
|
|
|
|
|
|
# (key->keyLen != 128 && key->keyLen != 192 && key->keyLen != 256)) { |
2070
|
|
|
|
|
|
|
# return BAD_KEY_MAT; |
2071
|
|
|
|
|
|
|
# } |
2072
|
|
|
|
|
|
|
|
2073
|
2005
|
50
|
33
|
|
|
38321
|
if (not defined $key or $key->{direction} != DIR_DECRYPT or |
|
|
|
100
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
|
33
|
|
|
|
|
2074
|
|
|
|
|
|
|
($key->{keyLen} != 128 and $key->{keyLen} != 192 and $key->{keyLen} != 256)) { |
2075
|
0
|
|
|
|
|
0
|
die "BAD_KEY_MAT"; |
2076
|
|
|
|
|
|
|
} |
2077
|
|
|
|
|
|
|
|
2078
|
|
|
|
|
|
|
# if (cipher == NULL || |
2079
|
|
|
|
|
|
|
# (cipher->mode != MODE_ECB && cipher->mode != MODE_CBC && cipher->mode != MODE_CFB1) || |
2080
|
|
|
|
|
|
|
# (cipher->blockLen != 128 && cipher->blockLen != 192 && cipher->blockLen != 256)) { |
2081
|
|
|
|
|
|
|
# return BAD_CIPHER_STATE; |
2082
|
|
|
|
|
|
|
# } |
2083
|
|
|
|
|
|
|
|
2084
|
2005
|
50
|
66
|
|
|
19576
|
if (not defined $cipher or ($cipher->{mode} != MODE_ECB and $cipher->{mode} != MODE_CBC and $cipher->{mode} != MODE_CFB1) or |
|
|
|
33
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
|
33
|
|
|
|
|
2085
|
|
|
|
|
|
|
($cipher->{blockLen} != 128 and $cipher->{blockLen} != 192 and $cipher->{blockLen} != 256)) { |
2086
|
0
|
|
|
|
|
0
|
die "BAD_CIPHER_STATE"; |
2087
|
|
|
|
|
|
|
} |
2088
|
|
|
|
|
|
|
|
2089
|
|
|
|
|
|
|
# |
2090
|
|
|
|
|
|
|
# |
2091
|
|
|
|
|
|
|
# numBlocks = inputLen/cipher->blockLen; |
2092
|
|
|
|
|
|
|
|
2093
|
2005
|
|
|
|
|
3168
|
$numBlocks = $inputLen / $cipher->{blockLen}; |
2094
|
|
|
|
|
|
|
|
2095
|
|
|
|
|
|
|
# |
2096
|
|
|
|
|
|
|
# switch (cipher->mode) { |
2097
|
|
|
|
|
|
|
# case MODE_ECB: |
2098
|
|
|
|
|
|
|
# for (i = 0; i < numBlocks; i++) { |
2099
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2100
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2101
|
|
|
|
|
|
|
# /* parse input stream into rectangular array */ |
2102
|
|
|
|
|
|
|
# block[t][j] = input[4*j+t] & 0xFF; |
2103
|
|
|
|
|
|
|
# } |
2104
|
|
|
|
|
|
|
# rijndaelDecrypt (block, key->keyLen, cipher->blockLen, key->keySched); |
2105
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2106
|
|
|
|
|
|
|
# /* parse rectangular array into output ciphertext bytes */ |
2107
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2108
|
|
|
|
|
|
|
# outBuffer[4*j+t] = (BYTE) block[t][j]; |
2109
|
|
|
|
|
|
|
# } |
2110
|
|
|
|
|
|
|
# } |
2111
|
|
|
|
|
|
|
# break; |
2112
|
|
|
|
|
|
|
|
2113
|
2005
|
100
|
|
|
|
7465
|
if ($cipher->{mode} == MODE_ECB) { |
|
|
50
|
|
|
|
|
|
2114
|
559
|
|
|
|
|
1050
|
for $i (0..$numBlocks-1) { |
2115
|
559
|
|
|
|
|
1161
|
for $j (0..$cipher->{blockLen}/32-1) { |
2116
|
2254
|
|
|
|
|
3196
|
for $t (0..3) { |
2117
|
9016
|
|
|
|
|
16843
|
$block[$t][$j] = $input->[4*$j+$t] & 0xFF; |
2118
|
|
|
|
|
|
|
} |
2119
|
|
|
|
|
|
|
} |
2120
|
559
|
|
|
|
|
1969
|
rijndaelDecrypt(@block, $key->{keyLen}, $cipher->{blockLen}, $key->{keySched}); |
2121
|
559
|
|
|
|
|
1864
|
for $j (0..$cipher->{blockLen}/32-1) { |
2122
|
2254
|
|
|
|
|
3293
|
for $t (0..3) { |
2123
|
9016
|
|
|
|
|
18467
|
$outBuffer->[4*$j+$t] = $block[$t][$j]; |
2124
|
|
|
|
|
|
|
} |
2125
|
|
|
|
|
|
|
} |
2126
|
|
|
|
|
|
|
} |
2127
|
|
|
|
|
|
|
} |
2128
|
|
|
|
|
|
|
|
2129
|
|
|
|
|
|
|
|
2130
|
|
|
|
|
|
|
# |
2131
|
|
|
|
|
|
|
# case MODE_CBC: |
2132
|
|
|
|
|
|
|
# /* first block */ |
2133
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2134
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2135
|
|
|
|
|
|
|
# /* parse input stream into rectangular array */ |
2136
|
|
|
|
|
|
|
# block[t][j] = input[4*j+t] & 0xFF; |
2137
|
|
|
|
|
|
|
# } |
2138
|
|
|
|
|
|
|
|
2139
|
|
|
|
|
|
|
elsif ($cipher->{mode} == MODE_CBC) { |
2140
|
1446
|
|
|
|
|
3981
|
for $j (0..$cipher->{blockLen}/32-1) { |
2141
|
5784
|
|
|
|
|
12846
|
for $t (0..3) { |
2142
|
23136
|
|
|
|
|
54306
|
$block[$t][$j] = $input->[$t+4*$j] & 0xFF |
2143
|
|
|
|
|
|
|
} |
2144
|
|
|
|
|
|
|
} |
2145
|
|
|
|
|
|
|
|
2146
|
|
|
|
|
|
|
|
2147
|
|
|
|
|
|
|
# rijndaelDecrypt (block, key->keyLen, cipher->blockLen, key->keySched); |
2148
|
|
|
|
|
|
|
|
2149
|
1446
|
|
|
|
|
6733
|
rijndaelDecrypt(@block, $key->{keyLen}, $cipher->{blockLen}, $key->{keySched}); |
2150
|
|
|
|
|
|
|
|
2151
|
|
|
|
|
|
|
# |
2152
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2153
|
|
|
|
|
|
|
# /* exor the IV and parse rectangular array into output ciphertext bytes */ |
2154
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2155
|
|
|
|
|
|
|
# outBuffer[4*j+t] = (BYTE) (block[t][j] ^ cipher->IV[t+4*j]); |
2156
|
|
|
|
|
|
|
# } |
2157
|
|
|
|
|
|
|
|
2158
|
1446
|
|
|
|
|
6401
|
for $j (0.. $cipher->{blockLen}/32-1) { |
2159
|
5784
|
|
|
|
|
9648
|
for $t (0..3) { |
2160
|
23136
|
|
|
|
|
67128
|
$outBuffer->[4*$j+$t] = $block[$t][$j] ^ $cipher->{IV}[$t+4*$j] |
2161
|
|
|
|
|
|
|
} |
2162
|
|
|
|
|
|
|
} |
2163
|
|
|
|
|
|
|
|
2164
|
|
|
|
|
|
|
# |
2165
|
|
|
|
|
|
|
# /* next blocks */ |
2166
|
|
|
|
|
|
|
# for (i = 1; i < numBlocks; i++) { |
2167
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2168
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2169
|
|
|
|
|
|
|
# /* parse input stream into rectangular array */ |
2170
|
|
|
|
|
|
|
# block[t][j] = input[cipher->blockLen/8+4*j+t] & 0xFF; |
2171
|
|
|
|
|
|
|
# } |
2172
|
|
|
|
|
|
|
# rijndaelDecrypt (block, key->keyLen, cipher->blockLen, key->keySched); |
2173
|
|
|
|
|
|
|
# |
2174
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2175
|
|
|
|
|
|
|
# /* exor previous ciphertext block and parse rectangular array |
2176
|
|
|
|
|
|
|
# into output ciphertext bytes */ |
2177
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2178
|
|
|
|
|
|
|
# outBuffer[cipher->blockLen/8+4*j+t] = (BYTE) (block[t][j] ^ |
2179
|
|
|
|
|
|
|
# input[4*j+t-4*cipher->blockLen/32]); |
2180
|
|
|
|
|
|
|
# } |
2181
|
|
|
|
|
|
|
# } |
2182
|
|
|
|
|
|
|
# break; |
2183
|
|
|
|
|
|
|
|
2184
|
1446
|
|
|
|
|
16054
|
for $i (1..$numBlocks-1) { |
2185
|
0
|
|
|
|
|
0
|
for $j (0..$cipher->{blockLen}/32-1) { |
2186
|
0
|
|
|
|
|
0
|
for $t (0..3) { |
2187
|
0
|
|
|
|
|
0
|
$block[$t][$j] ^= $input->[$cipher->{blockLen}/8+4*$j+$t] & 0xFF; |
2188
|
|
|
|
|
|
|
} |
2189
|
|
|
|
|
|
|
} |
2190
|
0
|
|
|
|
|
0
|
rijndaelDecrypt(@block,$key->{keyLen},$cipher->{blockLen}, $key->{keySched}); |
2191
|
0
|
|
|
|
|
0
|
for $j (0..$cipher->{blockLen}/32-1) { |
2192
|
0
|
|
|
|
|
0
|
for $t (0..3) { |
2193
|
0
|
|
|
|
|
0
|
$outBuffer->[$cipher->{blockLen}/8+4*$j+$t] = |
2194
|
|
|
|
|
|
|
$block[$t][$j] ^ $input->[4*$j+$t-4*$cipher->{blockLen}/32]; |
2195
|
|
|
|
|
|
|
} |
2196
|
|
|
|
|
|
|
} |
2197
|
|
|
|
|
|
|
} |
2198
|
|
|
|
|
|
|
} |
2199
|
|
|
|
|
|
|
|
2200
|
|
|
|
|
|
|
|
2201
|
|
|
|
|
|
|
|
2202
|
|
|
|
|
|
|
|
2203
|
|
|
|
|
|
|
# |
2204
|
|
|
|
|
|
|
# default: return BAD_CIPHER_STATE; |
2205
|
|
|
|
|
|
|
|
2206
|
0
|
|
|
|
|
0
|
else { die "BAD_CIPHER_STATE" } |
2207
|
|
|
|
|
|
|
|
2208
|
|
|
|
|
|
|
# } |
2209
|
|
|
|
|
|
|
# |
2210
|
|
|
|
|
|
|
# return numBlocks*cipher->blockLen; |
2211
|
|
|
|
|
|
|
#} |
2212
|
|
|
|
|
|
|
|
2213
|
2005
|
|
|
|
|
3993
|
$_[4] = $outBuffer; |
2214
|
|
|
|
|
|
|
|
2215
|
2005
|
|
|
|
|
15854
|
return $numBlocks * $cipher->{blockLen}; |
2216
|
|
|
|
|
|
|
} |
2217
|
|
|
|
|
|
|
|
2218
|
|
|
|
|
|
|
|
2219
|
|
|
|
|
|
|
#/** |
2220
|
|
|
|
|
|
|
# * cipherUpdateRounds: |
2221
|
|
|
|
|
|
|
# * |
2222
|
|
|
|
|
|
|
# * Encrypts/Decrypts exactly one full block a specified number of rounds. |
2223
|
|
|
|
|
|
|
# * Only used in the Intermediate Value Known Answer Test. |
2224
|
|
|
|
|
|
|
# * |
2225
|
|
|
|
|
|
|
# * Returns: |
2226
|
|
|
|
|
|
|
# * TRUE - on success |
2227
|
|
|
|
|
|
|
# * BAD_CIPHER_STATE - cipher in bad state (e.g., not initialized) |
2228
|
|
|
|
|
|
|
# */ |
2229
|
|
|
|
|
|
|
#int cipherUpdateRounds(cipherInstance *cipher, |
2230
|
|
|
|
|
|
|
# keyInstance *key, BYTE *input, int inputLen, BYTE *outBuffer, int rounds) |
2231
|
|
|
|
|
|
|
#{ |
2232
|
|
|
|
|
|
|
|
2233
|
|
|
|
|
|
|
sub cipherUpdateRounds($$$$$$) { |
2234
|
|
|
|
|
|
|
|
2235
|
0
|
|
|
0
|
0
|
0
|
my ($cipher, $key, $input, $inputLen, $outBuffer, $rounds) = @_; |
2236
|
|
|
|
|
|
|
|
2237
|
|
|
|
|
|
|
# int j, t; |
2238
|
|
|
|
|
|
|
# word8 block[4][MAXBC]; |
2239
|
|
|
|
|
|
|
|
2240
|
0
|
|
|
|
|
0
|
my ($j,$t,@block); |
2241
|
|
|
|
|
|
|
|
2242
|
|
|
|
|
|
|
# |
2243
|
|
|
|
|
|
|
# if (cipher == NULL || |
2244
|
|
|
|
|
|
|
# key == NULL || |
2245
|
|
|
|
|
|
|
# cipher->blockLen != key->blockLen) { |
2246
|
|
|
|
|
|
|
# return BAD_CIPHER_STATE; |
2247
|
|
|
|
|
|
|
# } |
2248
|
|
|
|
|
|
|
|
2249
|
0
|
0
|
0
|
|
|
0
|
if (not defined $cipher or not defined $key or $key->{direction} == DIR_ENCRYPT or $cipher->{blockLen} != $key->{blockLen}) { |
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
2250
|
0
|
|
|
|
|
0
|
die "BAD_CIPHER_STATE"; |
2251
|
|
|
|
|
|
|
} |
2252
|
|
|
|
|
|
|
|
2253
|
|
|
|
|
|
|
|
2254
|
|
|
|
|
|
|
# |
2255
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2256
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2257
|
|
|
|
|
|
|
# /* parse input stream into rectangular array */ |
2258
|
|
|
|
|
|
|
# block[t][j] = input[4*j+t] & 0xFF; |
2259
|
|
|
|
|
|
|
# } |
2260
|
|
|
|
|
|
|
|
2261
|
0
|
|
|
|
|
0
|
for $j (0..$cipher->{blockLen}/32-1) { |
2262
|
0
|
|
|
|
|
0
|
for $t (0..3) { |
2263
|
0
|
|
|
|
|
0
|
$block[$t][$j] = $input->[4*$j+$t] & 0xFF |
2264
|
|
|
|
|
|
|
} |
2265
|
|
|
|
|
|
|
} |
2266
|
|
|
|
|
|
|
|
2267
|
|
|
|
|
|
|
# switch (key->direction) { |
2268
|
|
|
|
|
|
|
# case DIR_ENCRYPT: |
2269
|
|
|
|
|
|
|
# rijndaelEncryptRound (block, key->keyLen, cipher->blockLen, |
2270
|
|
|
|
|
|
|
# key->keySched, rounds); |
2271
|
|
|
|
|
|
|
# break; |
2272
|
|
|
|
|
|
|
|
2273
|
0
|
0
|
|
|
|
0
|
if ($key->{direction} == DIR_ENCRYPT) { |
|
|
0
|
|
|
|
|
|
2274
|
0
|
|
|
|
|
0
|
rijndaelEncryptRound(@block, $key->{keyLen}, $cipher->{blockLen}, $key->{keySched}, $rounds); |
2275
|
|
|
|
|
|
|
} |
2276
|
|
|
|
|
|
|
|
2277
|
|
|
|
|
|
|
# |
2278
|
|
|
|
|
|
|
# case DIR_DECRYPT: |
2279
|
|
|
|
|
|
|
# rijndaelDecryptRound (block, key->keyLen, cipher->blockLen, |
2280
|
|
|
|
|
|
|
# key->keySched, rounds); |
2281
|
|
|
|
|
|
|
# break; |
2282
|
|
|
|
|
|
|
|
2283
|
|
|
|
|
|
|
elsif ($key->{direction} == DIR_DECRYPT) { |
2284
|
0
|
|
|
|
|
0
|
rijndaelDecryptRound(@block, $key->{keyLen}, $cipher->{blockLen}, $key->{keySched}, $rounds); |
2285
|
|
|
|
|
|
|
} |
2286
|
|
|
|
|
|
|
|
2287
|
|
|
|
|
|
|
# |
2288
|
|
|
|
|
|
|
# default: return BAD_KEY_DIR; |
2289
|
|
|
|
|
|
|
# } |
2290
|
|
|
|
|
|
|
|
2291
|
|
|
|
|
|
|
else { |
2292
|
0
|
|
|
|
|
0
|
die "BAD_KEY_DIR" |
2293
|
|
|
|
|
|
|
} |
2294
|
|
|
|
|
|
|
|
2295
|
|
|
|
|
|
|
# for (j = 0; j < cipher->blockLen/32; j++) { |
2296
|
|
|
|
|
|
|
# /* parse rectangular array into output ciphertext bytes */ |
2297
|
|
|
|
|
|
|
# for(t = 0; t < 4; t++) |
2298
|
|
|
|
|
|
|
# outBuffer[4*j+t] = (BYTE) block[t][j]; |
2299
|
|
|
|
|
|
|
# } |
2300
|
|
|
|
|
|
|
|
2301
|
0
|
|
|
|
|
0
|
for $j (0..$cipher->{blockLen}/32-1) { |
2302
|
0
|
|
|
|
|
0
|
for $t (0..3) { |
2303
|
0
|
|
|
|
|
0
|
$outBuffer->[4*$j+$t] = $block[$t][$j]; |
2304
|
|
|
|
|
|
|
} |
2305
|
|
|
|
|
|
|
} |
2306
|
|
|
|
|
|
|
|
2307
|
|
|
|
|
|
|
# |
2308
|
|
|
|
|
|
|
# return TRUE; |
2309
|
|
|
|
|
|
|
|
2310
|
0
|
|
|
|
|
0
|
return TRUE; |
2311
|
|
|
|
|
|
|
|
2312
|
|
|
|
|
|
|
#} |
2313
|
|
|
|
|
|
|
# |
2314
|
|
|
|
|
|
|
|
2315
|
|
|
|
|
|
|
} |
2316
|
|
|
|
|
|
|
|
2317
|
|
|
|
|
|
|
##################################################################################### |
2318
|
|
|
|
|
|
|
# my code |
2319
|
|
|
|
|
|
|
##################################################################################### |
2320
|
|
|
|
|
|
|
# |
2321
|
|
|
|
|
|
|
# |
2322
|
|
|
|
|
|
|
# |
2323
|
|
|
|
|
|
|
# |
2324
|
|
|
|
|
|
|
# |
2325
|
|
|
|
|
|
|
# |
2326
|
|
|
|
|
|
|
# |
2327
|
|
|
|
|
|
|
# |
2328
|
|
|
|
|
|
|
# |
2329
|
|
|
|
|
|
|
# |
2330
|
|
|
|
|
|
|
# |
2331
|
|
|
|
|
|
|
# |
2332
|
|
|
|
|
|
|
# |
2333
|
|
|
|
|
|
|
# |
2334
|
|
|
|
|
|
|
|
2335
|
|
|
|
|
|
|
# |
2336
|
|
|
|
|
|
|
# objektinterface |
2337
|
|
|
|
|
|
|
# |
2338
|
|
|
|
|
|
|
|
2339
|
5
|
|
|
5
|
|
54
|
use vars qw'$DEFAULT_BLOCKSIZE $DEFAULT_KEYSIZE'; |
|
5
|
|
|
|
|
11
|
|
|
5
|
|
|
|
|
24370
|
|
2340
|
|
|
|
|
|
|
# sub DEFAULT_BLOCKSIZE() { 128 } |
2341
|
|
|
|
|
|
|
# sub DEFAULT_KEYSIZE() { 256 } |
2342
|
|
|
|
|
|
|
$DEFAULT_BLOCKSIZE = 128; |
2343
|
|
|
|
|
|
|
$DEFAULT_KEYSIZE = 256; |
2344
|
|
|
|
|
|
|
|
2345
|
|
|
|
|
|
|
sub new { |
2346
|
10
|
|
|
10
|
0
|
5989
|
my ($class,$key,$mode) = @_; |
2347
|
|
|
|
|
|
|
|
2348
|
10
|
|
|
|
|
22
|
my $blocksize = $DEFAULT_BLOCKSIZE; |
2349
|
10
|
|
|
|
|
24
|
my $keysize = $DEFAULT_KEYSIZE; |
2350
|
10
|
|
|
|
|
31
|
my $ENkeyInst = { blockLen => $blocksize }; |
2351
|
10
|
|
|
|
|
30
|
my $DEkeyInst = { blockLen => $blocksize }; |
2352
|
10
|
50
|
|
|
|
36
|
$mode = MODE_ECB unless defined $mode; |
2353
|
|
|
|
|
|
|
|
2354
|
|
|
|
|
|
|
# compatibility mode for Crypt::Rijndael |
2355
|
10
|
|
|
|
|
66
|
$key = join '', unpack 'H*', $key; |
2356
|
|
|
|
|
|
|
|
2357
|
10
|
50
|
|
|
|
63
|
if (length($key) * 4 != $keysize) { |
2358
|
0
|
|
|
|
|
0
|
warn __PACKAGE__, ": set keysize to ", length($key)*4, ".\n"; |
2359
|
0
|
|
|
|
|
0
|
$keysize = length($key) * 4; |
2360
|
|
|
|
|
|
|
} |
2361
|
|
|
|
|
|
|
|
2362
|
10
|
|
|
|
|
19
|
eval { makeKey($ENkeyInst, DIR_ENCRYPT, $keysize, $key) }; |
|
10
|
|
|
|
|
35
|
|
2363
|
10
|
50
|
|
|
|
30
|
die $@ if $@; |
2364
|
|
|
|
|
|
|
|
2365
|
10
|
|
|
|
|
18
|
eval { makeKey($DEkeyInst, DIR_DECRYPT, $keysize, $key) }; |
|
10
|
|
|
|
|
57
|
|
2366
|
10
|
50
|
|
|
|
33
|
die $@ if $@; |
2367
|
|
|
|
|
|
|
|
2368
|
10
|
|
|
|
|
34
|
my $cipherInst = { blockLen => $blocksize }; |
2369
|
10
|
|
|
|
|
34
|
my $IV = "\0" x ($blocksize/8); |
2370
|
10
|
|
|
|
|
17
|
eval { cipherInit($cipherInst, $mode, $IV) }; |
|
10
|
|
|
|
|
36
|
|
2371
|
10
|
50
|
|
|
|
35
|
die $@ if $@; |
2372
|
|
|
|
|
|
|
|
2373
|
10
|
|
|
|
|
65
|
my $self = { |
2374
|
|
|
|
|
|
|
cipherInst => $cipherInst, |
2375
|
|
|
|
|
|
|
ENkeyInst => $ENkeyInst, |
2376
|
|
|
|
|
|
|
DEkeyInst => $DEkeyInst, |
2377
|
|
|
|
|
|
|
IV => $IV, |
2378
|
|
|
|
|
|
|
keysize => $keysize, |
2379
|
|
|
|
|
|
|
blocksize => $blocksize |
2380
|
|
|
|
|
|
|
}; |
2381
|
|
|
|
|
|
|
|
2382
|
10
|
|
33
|
|
|
103
|
bless $self, ref($class) || $class; |
2383
|
|
|
|
|
|
|
} |
2384
|
|
|
|
|
|
|
|
2385
|
|
|
|
|
|
|
sub encrypt { |
2386
|
100
|
|
|
100
|
0
|
83345
|
my ($self,$data) = @_; |
2387
|
100
|
|
|
|
|
157
|
my $out; |
2388
|
100
|
|
|
|
|
603
|
for (my $i=0; $i < length($data) / ($self->{blocksize}/8); $i++) { |
2389
|
896
|
|
|
|
|
11063
|
my $tmp = []; |
2390
|
896
|
|
|
|
|
8842
|
my @block = unpack 'C'x($self->{blocksize}/8), |
2391
|
|
|
|
|
|
|
substr($data,$i*$self->{blocksize}/8,$self->{blocksize}/8); |
2392
|
896
|
|
|
|
|
2445
|
eval { |
2393
|
896
|
|
|
|
|
4204
|
my $res = blockEncrypt($self->{cipherInst}, $self->{ENkeyInst}, \@block, $self->{blocksize}, $tmp); |
2394
|
|
|
|
|
|
|
}; |
2395
|
896
|
50
|
|
|
|
11212
|
die $@ if $@; |
2396
|
896
|
|
|
|
|
37757
|
$out .= pack 'C'x($self->{blocksize}/8), @$tmp; |
2397
|
|
|
|
|
|
|
} |
2398
|
100
|
50
|
|
|
|
389
|
return unless defined $out; |
2399
|
100
|
|
|
|
|
727
|
$out; |
2400
|
|
|
|
|
|
|
} |
2401
|
|
|
|
|
|
|
|
2402
|
|
|
|
|
|
|
sub decrypt { |
2403
|
100
|
|
|
100
|
0
|
1123
|
my ($self,$data) = @_; |
2404
|
100
|
|
|
|
|
184
|
my $out; |
2405
|
100
|
|
|
|
|
1008
|
for (my $i=0; $i < length($data) / ($self->{blocksize}/8); $i++) { |
2406
|
896
|
|
|
|
|
21680
|
my $tmp = []; |
2407
|
896
|
|
|
|
|
17749
|
my @block = unpack 'C'x($self->{blocksize}/8), |
2408
|
|
|
|
|
|
|
substr($data,$i*$self->{blocksize}/8,$self->{blocksize}/8); |
2409
|
896
|
|
|
|
|
10084
|
eval { |
2410
|
896
|
|
|
|
|
11059
|
my $res = blockDecrypt($self->{cipherInst}, $self->{DEkeyInst}, \@block, $self->{blocksize}, $tmp); |
2411
|
|
|
|
|
|
|
}; |
2412
|
896
|
50
|
|
|
|
3569
|
die $@ if $@; |
2413
|
896
|
|
|
|
|
24518
|
$out .= pack 'C'x($self->{blocksize}/8), @$tmp; |
2414
|
|
|
|
|
|
|
} |
2415
|
100
|
50
|
|
|
|
423
|
return unless defined $out; |
2416
|
100
|
|
|
|
|
768
|
$out; |
2417
|
|
|
|
|
|
|
} |
2418
|
|
|
|
|
|
|
|
2419
|
|
|
|
|
|
|
|
2420
|
|
|
|
|
|
|
sub rijndael_encrypt($$$;$$) { |
2421
|
209
|
|
|
209
|
0
|
92307
|
my ($key, $mode, $data, $keysize, $blocksize) = @_; |
2422
|
|
|
|
|
|
|
|
2423
|
209
|
50
|
|
|
|
773
|
$keysize = 128 unless defined $keysize; |
2424
|
209
|
50
|
|
|
|
704
|
$blocksize = 128 unless defined $blocksize; |
2425
|
|
|
|
|
|
|
|
2426
|
209
|
|
|
|
|
805
|
my $keyInst = { blockLen => $blocksize }; |
2427
|
|
|
|
|
|
|
|
2428
|
209
|
50
|
|
|
|
1510
|
if (length $key < $keysize/4) { |
|
|
50
|
|
|
|
|
|
2429
|
0
|
|
|
|
|
0
|
$key .= "0" x ($keysize/4 - length $key); |
2430
|
0
|
|
|
|
|
0
|
warn "rijndael_encrypt: padded key to keysize ($keysize)\n"; |
2431
|
|
|
|
|
|
|
} elsif (length $key > $keysize/4) { |
2432
|
0
|
|
|
|
|
0
|
$key = substr $key, 0, $keysize/4; |
2433
|
0
|
|
|
|
|
0
|
warn "rijndael_encrypt: truncated key to keysize ($keysize)\n"; |
2434
|
|
|
|
|
|
|
} |
2435
|
|
|
|
|
|
|
|
2436
|
209
|
50
|
|
|
|
838
|
if (length($data) % ($blocksize/8)) { |
2437
|
0
|
|
|
|
|
0
|
$data .= "0" x ($blocksize/8 - (length($data) % ($blocksize/8))); |
2438
|
0
|
|
|
|
|
0
|
warn "rijndael_encrypt: padded data to multiple of blocksize ($blocksize)\n"; |
2439
|
|
|
|
|
|
|
} |
2440
|
|
|
|
|
|
|
|
2441
|
209
|
|
|
|
|
290
|
my $res; |
2442
|
|
|
|
|
|
|
|
2443
|
209
|
|
|
|
|
512
|
eval { makeKey($keyInst, DIR_ENCRYPT, $keysize, $key) }; |
|
209
|
|
|
|
|
807
|
|
2444
|
209
|
50
|
|
|
|
821
|
die $@ if $@; |
2445
|
|
|
|
|
|
|
|
2446
|
209
|
|
|
|
|
678
|
my $cipherInst = { blockLen => $blocksize }; |
2447
|
|
|
|
|
|
|
|
2448
|
209
|
|
|
|
|
508
|
my $IV = "\0" x ($blocksize/8); |
2449
|
|
|
|
|
|
|
|
2450
|
209
|
|
|
|
|
314
|
eval { cipherInit($cipherInst, $mode, $IV) }; |
|
209
|
|
|
|
|
677
|
|
2451
|
209
|
50
|
|
|
|
493
|
die $@ if $@; |
2452
|
|
|
|
|
|
|
|
2453
|
209
|
|
|
|
|
326
|
my $out; |
2454
|
|
|
|
|
|
|
|
2455
|
|
|
|
|
|
|
my $i; |
2456
|
209
|
|
|
|
|
826
|
for ($i=0; $i < length($data) / ($blocksize/8); $i++) { |
2457
|
1109
|
|
|
|
|
2416
|
my $tmp = []; |
2458
|
1109
|
|
|
|
|
7823
|
my @block = unpack 'C'x($blocksize/8), substr($data,$i*$blocksize/8,$blocksize/8); |
2459
|
1109
|
|
|
|
|
1891
|
eval { |
2460
|
1109
|
|
|
|
|
3196
|
my $res = blockEncrypt($cipherInst, $keyInst, \@block, $blocksize, $tmp); |
2461
|
|
|
|
|
|
|
}; |
2462
|
1109
|
50
|
|
|
|
2955
|
die $@ if $@; |
2463
|
1109
|
|
|
|
|
11722
|
$out .= pack 'C'x($blocksize/8), @$tmp; |
2464
|
|
|
|
|
|
|
} |
2465
|
|
|
|
|
|
|
|
2466
|
209
|
50
|
|
|
|
577
|
return unless defined $out; |
2467
|
209
|
|
|
|
|
6453
|
$out; |
2468
|
|
|
|
|
|
|
} |
2469
|
|
|
|
|
|
|
|
2470
|
|
|
|
|
|
|
|
2471
|
|
|
|
|
|
|
|
2472
|
|
|
|
|
|
|
sub rijndael_decrypt($$$;$$) { |
2473
|
209
|
|
|
209
|
0
|
2041
|
my ($key, $mode, $data, $keysize, $blocksize) = @_; |
2474
|
|
|
|
|
|
|
|
2475
|
209
|
50
|
|
|
|
620
|
$keysize = 128 unless defined $keysize; |
2476
|
209
|
50
|
|
|
|
535
|
$blocksize = 128 unless defined $blocksize; |
2477
|
|
|
|
|
|
|
|
2478
|
209
|
|
|
|
|
778
|
my $keyInst = { blockLen => $blocksize }; |
2479
|
|
|
|
|
|
|
|
2480
|
209
|
50
|
|
|
|
1041
|
if (length $key < ($keysize/4)) { |
|
|
50
|
|
|
|
|
|
2481
|
0
|
|
|
|
|
0
|
$key .= "0" x ($keysize/4 - length $key); |
2482
|
0
|
|
|
|
|
0
|
warn "rijndael_decrypt: padded key to keysize ($keysize)\n"; |
2483
|
|
|
|
|
|
|
} elsif (length $key > $keysize/4) { |
2484
|
0
|
|
|
|
|
0
|
$key = substr $key, 0, $keysize/4; |
2485
|
0
|
|
|
|
|
0
|
warn "rijndael_decrypt: truncate key to keysize ($keysize)\n"; |
2486
|
|
|
|
|
|
|
} |
2487
|
|
|
|
|
|
|
|
2488
|
209
|
|
|
|
|
307
|
my $res; |
2489
|
|
|
|
|
|
|
|
2490
|
209
|
|
|
|
|
322
|
eval { makeKey($keyInst, DIR_DECRYPT, $keysize, $key) }; |
|
209
|
|
|
|
|
737
|
|
2491
|
209
|
50
|
|
|
|
625
|
die $@ if $@; |
2492
|
|
|
|
|
|
|
|
2493
|
209
|
|
|
|
|
990
|
my $cipherInst = { blockLen => $blocksize }; |
2494
|
|
|
|
|
|
|
|
2495
|
209
|
|
|
|
|
788
|
my $IV = "\0" x ($blocksize/8); |
2496
|
|
|
|
|
|
|
|
2497
|
209
|
|
|
|
|
262
|
eval { cipherInit($cipherInst, $mode, $IV) }; |
|
209
|
|
|
|
|
641
|
|
2498
|
209
|
50
|
|
|
|
653
|
die $@ if $@; |
2499
|
|
|
|
|
|
|
|
2500
|
209
|
|
|
|
|
304
|
my $out; |
2501
|
|
|
|
|
|
|
my $i; |
2502
|
|
|
|
|
|
|
|
2503
|
209
|
|
|
|
|
809
|
for ($i=0; $i < length($data) / ($blocksize/8); $i++) { |
2504
|
1109
|
|
|
|
|
2318
|
my $tmp = []; |
2505
|
1109
|
|
|
|
|
8072
|
my @block = unpack 'C'x($blocksize/8), substr($data,$i*$blocksize/8,$blocksize/8); |
2506
|
1109
|
|
|
|
|
2252
|
eval { |
2507
|
1109
|
|
|
|
|
3454
|
blockDecrypt($cipherInst, $keyInst, \@block, $blocksize, $tmp) |
2508
|
|
|
|
|
|
|
}; |
2509
|
1109
|
50
|
|
|
|
8937
|
die $@ if $@; |
2510
|
1109
|
|
|
|
|
12813
|
$out .= pack 'C'x($blocksize/8), @$tmp; |
2511
|
|
|
|
|
|
|
} |
2512
|
|
|
|
|
|
|
|
2513
|
209
|
50
|
|
|
|
645
|
return unless defined $out; |
2514
|
209
|
|
|
|
|
6420
|
$out; |
2515
|
|
|
|
|
|
|
} |
2516
|
|
|
|
|
|
|
|
2517
|
|
|
|
|
|
|
#################################################### |
2518
|
|
|
|
|
|
|
# |
2519
|
|
|
|
|
|
|
# Interface for Crypt::CBC |
2520
|
|
|
|
|
|
|
# |
2521
|
|
|
|
|
|
|
#################################################### |
2522
|
|
|
|
|
|
|
|
2523
|
|
|
|
|
|
|
# return keysize in bytes |
2524
|
|
|
|
|
|
|
sub keysize { |
2525
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
2526
|
0
|
0
|
0
|
|
|
|
if (defined $self and ref $self and defined $self->{keysize}) { |
|
|
|
0
|
|
|
|
|
2527
|
0
|
|
|
|
|
|
return $self->{keysize}/8 |
2528
|
|
|
|
|
|
|
} |
2529
|
0
|
|
|
|
|
|
return $DEFAULT_KEYSIZE/8 |
2530
|
|
|
|
|
|
|
} |
2531
|
|
|
|
|
|
|
|
2532
|
|
|
|
|
|
|
# return blocksize in bytes |
2533
|
|
|
|
|
|
|
sub blocksize { |
2534
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
2535
|
0
|
0
|
0
|
|
|
|
if (defined $self and ref $self and defined $self->{blocksize}) { |
|
|
|
0
|
|
|
|
|
2536
|
0
|
|
|
|
|
|
return $self->{blocksize}/8 |
2537
|
|
|
|
|
|
|
} |
2538
|
0
|
|
|
|
|
|
return $DEFAULT_BLOCKSIZE/8 |
2539
|
|
|
|
|
|
|
} |
2540
|
|
|
|
|
|
|
|
2541
|
|
|
|
|
|
|
1; # make require happy :-) |
2542
|
|
|
|
|
|
|
|
2543
|
|
|
|
|
|
|
__END__ |