| 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__ |