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