Crypto++  5.6.3
Free C++ class library of cryptographic schemes
rdtables.cpp
1 // Rijndael tables
2 
3 #include "pch.h"
4 
5 #ifndef CRYPTOPP_IMPORTS
6 
7 #include "rijndael.h"
8 
9 // VC60 workaround: gives a C4786 warning without this function
10 // when runtime lib is set to multithread debug DLL
11 // even though warning 4786 is disabled!
12 void Rijndael_VC60Workaround()
13 {
14 }
15 
16 NAMESPACE_BEGIN(CryptoPP)
17 
18 /*
19 Te0[x] = S [x].[02, 01, 01, 03];
20 Te1[x] = S [x].[03, 02, 01, 01];
21 Te2[x] = S [x].[01, 03, 02, 01];
22 Te3[x] = S [x].[01, 01, 03, 02];
23 
24 Td0[x] = Si[x].[0e, 09, 0d, 0b];
25 Td1[x] = Si[x].[0b, 0e, 09, 0d];
26 Td2[x] = Si[x].[0d, 0b, 0e, 09];
27 Td3[x] = Si[x].[09, 0d, 0b, 0e];
28 */
29 
30 const byte Rijndael::Base::Se[256] = {
31  0x63, 0x7c, 0x77, 0x7b,
32  0xf2, 0x6b, 0x6f, 0xc5,
33  0x30, 0x01, 0x67, 0x2b,
34  0xfe, 0xd7, 0xab, 0x76,
35  0xca, 0x82, 0xc9, 0x7d,
36  0xfa, 0x59, 0x47, 0xf0,
37  0xad, 0xd4, 0xa2, 0xaf,
38  0x9c, 0xa4, 0x72, 0xc0,
39  0xb7, 0xfd, 0x93, 0x26,
40  0x36, 0x3f, 0xf7, 0xcc,
41  0x34, 0xa5, 0xe5, 0xf1,
42  0x71, 0xd8, 0x31, 0x15,
43  0x04, 0xc7, 0x23, 0xc3,
44  0x18, 0x96, 0x05, 0x9a,
45  0x07, 0x12, 0x80, 0xe2,
46  0xeb, 0x27, 0xb2, 0x75,
47  0x09, 0x83, 0x2c, 0x1a,
48  0x1b, 0x6e, 0x5a, 0xa0,
49  0x52, 0x3b, 0xd6, 0xb3,
50  0x29, 0xe3, 0x2f, 0x84,
51  0x53, 0xd1, 0x00, 0xed,
52  0x20, 0xfc, 0xb1, 0x5b,
53  0x6a, 0xcb, 0xbe, 0x39,
54  0x4a, 0x4c, 0x58, 0xcf,
55  0xd0, 0xef, 0xaa, 0xfb,
56  0x43, 0x4d, 0x33, 0x85,
57  0x45, 0xf9, 0x02, 0x7f,
58  0x50, 0x3c, 0x9f, 0xa8,
59  0x51, 0xa3, 0x40, 0x8f,
60  0x92, 0x9d, 0x38, 0xf5,
61  0xbc, 0xb6, 0xda, 0x21,
62  0x10, 0xff, 0xf3, 0xd2,
63  0xcd, 0x0c, 0x13, 0xec,
64  0x5f, 0x97, 0x44, 0x17,
65  0xc4, 0xa7, 0x7e, 0x3d,
66  0x64, 0x5d, 0x19, 0x73,
67  0x60, 0x81, 0x4f, 0xdc,
68  0x22, 0x2a, 0x90, 0x88,
69  0x46, 0xee, 0xb8, 0x14,
70  0xde, 0x5e, 0x0b, 0xdb,
71  0xe0, 0x32, 0x3a, 0x0a,
72  0x49, 0x06, 0x24, 0x5c,
73  0xc2, 0xd3, 0xac, 0x62,
74  0x91, 0x95, 0xe4, 0x79,
75  0xe7, 0xc8, 0x37, 0x6d,
76  0x8d, 0xd5, 0x4e, 0xa9,
77  0x6c, 0x56, 0xf4, 0xea,
78  0x65, 0x7a, 0xae, 0x08,
79  0xba, 0x78, 0x25, 0x2e,
80  0x1c, 0xa6, 0xb4, 0xc6,
81  0xe8, 0xdd, 0x74, 0x1f,
82  0x4b, 0xbd, 0x8b, 0x8a,
83  0x70, 0x3e, 0xb5, 0x66,
84  0x48, 0x03, 0xf6, 0x0e,
85  0x61, 0x35, 0x57, 0xb9,
86  0x86, 0xc1, 0x1d, 0x9e,
87  0xe1, 0xf8, 0x98, 0x11,
88  0x69, 0xd9, 0x8e, 0x94,
89  0x9b, 0x1e, 0x87, 0xe9,
90  0xce, 0x55, 0x28, 0xdf,
91  0x8c, 0xa1, 0x89, 0x0d,
92  0xbf, 0xe6, 0x42, 0x68,
93  0x41, 0x99, 0x2d, 0x0f,
94  0xb0, 0x54, 0xbb, 0x16,
95 };
96 
97 const byte Rijndael::Base::Sd[256] = {
98  0x52, 0x09, 0x6a, 0xd5,
99  0x30, 0x36, 0xa5, 0x38,
100  0xbf, 0x40, 0xa3, 0x9e,
101  0x81, 0xf3, 0xd7, 0xfb,
102  0x7c, 0xe3, 0x39, 0x82,
103  0x9b, 0x2f, 0xff, 0x87,
104  0x34, 0x8e, 0x43, 0x44,
105  0xc4, 0xde, 0xe9, 0xcb,
106  0x54, 0x7b, 0x94, 0x32,
107  0xa6, 0xc2, 0x23, 0x3d,
108  0xee, 0x4c, 0x95, 0x0b,
109  0x42, 0xfa, 0xc3, 0x4e,
110  0x08, 0x2e, 0xa1, 0x66,
111  0x28, 0xd9, 0x24, 0xb2,
112  0x76, 0x5b, 0xa2, 0x49,
113  0x6d, 0x8b, 0xd1, 0x25,
114  0x72, 0xf8, 0xf6, 0x64,
115  0x86, 0x68, 0x98, 0x16,
116  0xd4, 0xa4, 0x5c, 0xcc,
117  0x5d, 0x65, 0xb6, 0x92,
118  0x6c, 0x70, 0x48, 0x50,
119  0xfd, 0xed, 0xb9, 0xda,
120  0x5e, 0x15, 0x46, 0x57,
121  0xa7, 0x8d, 0x9d, 0x84,
122  0x90, 0xd8, 0xab, 0x00,
123  0x8c, 0xbc, 0xd3, 0x0a,
124  0xf7, 0xe4, 0x58, 0x05,
125  0xb8, 0xb3, 0x45, 0x06,
126  0xd0, 0x2c, 0x1e, 0x8f,
127  0xca, 0x3f, 0x0f, 0x02,
128  0xc1, 0xaf, 0xbd, 0x03,
129  0x01, 0x13, 0x8a, 0x6b,
130  0x3a, 0x91, 0x11, 0x41,
131  0x4f, 0x67, 0xdc, 0xea,
132  0x97, 0xf2, 0xcf, 0xce,
133  0xf0, 0xb4, 0xe6, 0x73,
134  0x96, 0xac, 0x74, 0x22,
135  0xe7, 0xad, 0x35, 0x85,
136  0xe2, 0xf9, 0x37, 0xe8,
137  0x1c, 0x75, 0xdf, 0x6e,
138  0x47, 0xf1, 0x1a, 0x71,
139  0x1d, 0x29, 0xc5, 0x89,
140  0x6f, 0xb7, 0x62, 0x0e,
141  0xaa, 0x18, 0xbe, 0x1b,
142  0xfc, 0x56, 0x3e, 0x4b,
143  0xc6, 0xd2, 0x79, 0x20,
144  0x9a, 0xdb, 0xc0, 0xfe,
145  0x78, 0xcd, 0x5a, 0xf4,
146  0x1f, 0xdd, 0xa8, 0x33,
147  0x88, 0x07, 0xc7, 0x31,
148  0xb1, 0x12, 0x10, 0x59,
149  0x27, 0x80, 0xec, 0x5f,
150  0x60, 0x51, 0x7f, 0xa9,
151  0x19, 0xb5, 0x4a, 0x0d,
152  0x2d, 0xe5, 0x7a, 0x9f,
153  0x93, 0xc9, 0x9c, 0xef,
154  0xa0, 0xe0, 0x3b, 0x4d,
155  0xae, 0x2a, 0xf5, 0xb0,
156  0xc8, 0xeb, 0xbb, 0x3c,
157  0x83, 0x53, 0x99, 0x61,
158  0x17, 0x2b, 0x04, 0x7e,
159  0xba, 0x77, 0xd6, 0x26,
160  0xe1, 0x69, 0x14, 0x63,
161  0x55, 0x21, 0x0c, 0x7d,
162 };
163 
164 const word32 Rijndael::Base::rcon[] = {
165  0x01000000, 0x02000000, 0x04000000, 0x08000000,
166  0x10000000, 0x20000000, 0x40000000, 0x80000000,
167  0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
168 };
169 
170 NAMESPACE_END
171 
172 #endif
Rijndael block cipher implementation details.
Definition: rijndael.h:29
Classes for Rijndael encryption algorithm.
Crypto++ library namespace.