• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

rdtables.cpp

00001 // Rijndael tables
00002 
00003 #include "pch.h"
00004 
00005 #ifndef CRYPTOPP_IMPORTS
00006 
00007 #include "rijndael.h"
00008 
00009 // VC60 workaround: gives a C4786 warning without this function
00010 // when runtime lib is set to multithread debug DLL
00011 // even though warning 4786 is disabled!
00012 void Rijndael_VC60Workaround()
00013 {
00014 }
00015 
00016 NAMESPACE_BEGIN(CryptoPP)
00017 
00018 /*
00019 Te0[x] = S [x].[02, 01, 01, 03];
00020 Te1[x] = S [x].[03, 02, 01, 01];
00021 Te2[x] = S [x].[01, 03, 02, 01];
00022 Te3[x] = S [x].[01, 01, 03, 02];
00023 
00024 Td0[x] = Si[x].[0e, 09, 0d, 0b];
00025 Td1[x] = Si[x].[0b, 0e, 09, 0d];
00026 Td2[x] = Si[x].[0d, 0b, 0e, 09];
00027 Td3[x] = Si[x].[09, 0d, 0b, 0e];
00028 */
00029 
00030 const byte Rijndael::Base::Se[256] = {
00031     0x63, 0x7c, 0x77, 0x7b,
00032     0xf2, 0x6b, 0x6f, 0xc5,
00033     0x30, 0x01, 0x67, 0x2b,
00034     0xfe, 0xd7, 0xab, 0x76,
00035     0xca, 0x82, 0xc9, 0x7d,
00036     0xfa, 0x59, 0x47, 0xf0,
00037     0xad, 0xd4, 0xa2, 0xaf,
00038     0x9c, 0xa4, 0x72, 0xc0,
00039     0xb7, 0xfd, 0x93, 0x26,
00040     0x36, 0x3f, 0xf7, 0xcc,
00041     0x34, 0xa5, 0xe5, 0xf1,
00042     0x71, 0xd8, 0x31, 0x15,
00043     0x04, 0xc7, 0x23, 0xc3,
00044     0x18, 0x96, 0x05, 0x9a,
00045     0x07, 0x12, 0x80, 0xe2,
00046     0xeb, 0x27, 0xb2, 0x75,
00047     0x09, 0x83, 0x2c, 0x1a,
00048     0x1b, 0x6e, 0x5a, 0xa0,
00049     0x52, 0x3b, 0xd6, 0xb3,
00050     0x29, 0xe3, 0x2f, 0x84,
00051     0x53, 0xd1, 0x00, 0xed,
00052     0x20, 0xfc, 0xb1, 0x5b,
00053     0x6a, 0xcb, 0xbe, 0x39,
00054     0x4a, 0x4c, 0x58, 0xcf,
00055     0xd0, 0xef, 0xaa, 0xfb,
00056     0x43, 0x4d, 0x33, 0x85,
00057     0x45, 0xf9, 0x02, 0x7f,
00058     0x50, 0x3c, 0x9f, 0xa8,
00059     0x51, 0xa3, 0x40, 0x8f,
00060     0x92, 0x9d, 0x38, 0xf5,
00061     0xbc, 0xb6, 0xda, 0x21,
00062     0x10, 0xff, 0xf3, 0xd2,
00063     0xcd, 0x0c, 0x13, 0xec,
00064     0x5f, 0x97, 0x44, 0x17,
00065     0xc4, 0xa7, 0x7e, 0x3d,
00066     0x64, 0x5d, 0x19, 0x73,
00067     0x60, 0x81, 0x4f, 0xdc,
00068     0x22, 0x2a, 0x90, 0x88,
00069     0x46, 0xee, 0xb8, 0x14,
00070     0xde, 0x5e, 0x0b, 0xdb,
00071     0xe0, 0x32, 0x3a, 0x0a,
00072     0x49, 0x06, 0x24, 0x5c,
00073     0xc2, 0xd3, 0xac, 0x62,
00074     0x91, 0x95, 0xe4, 0x79,
00075     0xe7, 0xc8, 0x37, 0x6d,
00076     0x8d, 0xd5, 0x4e, 0xa9,
00077     0x6c, 0x56, 0xf4, 0xea,
00078     0x65, 0x7a, 0xae, 0x08,
00079     0xba, 0x78, 0x25, 0x2e,
00080     0x1c, 0xa6, 0xb4, 0xc6,
00081     0xe8, 0xdd, 0x74, 0x1f,
00082     0x4b, 0xbd, 0x8b, 0x8a,
00083     0x70, 0x3e, 0xb5, 0x66,
00084     0x48, 0x03, 0xf6, 0x0e,
00085     0x61, 0x35, 0x57, 0xb9,
00086     0x86, 0xc1, 0x1d, 0x9e,
00087     0xe1, 0xf8, 0x98, 0x11,
00088     0x69, 0xd9, 0x8e, 0x94,
00089     0x9b, 0x1e, 0x87, 0xe9,
00090     0xce, 0x55, 0x28, 0xdf,
00091     0x8c, 0xa1, 0x89, 0x0d,
00092     0xbf, 0xe6, 0x42, 0x68,
00093     0x41, 0x99, 0x2d, 0x0f,
00094     0xb0, 0x54, 0xbb, 0x16,
00095 };
00096 
00097 const byte Rijndael::Base::Sd[256] = {
00098     0x52, 0x09, 0x6a, 0xd5,
00099     0x30, 0x36, 0xa5, 0x38,
00100     0xbf, 0x40, 0xa3, 0x9e,
00101     0x81, 0xf3, 0xd7, 0xfb,
00102     0x7c, 0xe3, 0x39, 0x82,
00103     0x9b, 0x2f, 0xff, 0x87,
00104     0x34, 0x8e, 0x43, 0x44,
00105     0xc4, 0xde, 0xe9, 0xcb,
00106     0x54, 0x7b, 0x94, 0x32,
00107     0xa6, 0xc2, 0x23, 0x3d,
00108     0xee, 0x4c, 0x95, 0x0b,
00109     0x42, 0xfa, 0xc3, 0x4e,
00110     0x08, 0x2e, 0xa1, 0x66,
00111     0x28, 0xd9, 0x24, 0xb2,
00112     0x76, 0x5b, 0xa2, 0x49,
00113     0x6d, 0x8b, 0xd1, 0x25,
00114     0x72, 0xf8, 0xf6, 0x64,
00115     0x86, 0x68, 0x98, 0x16,
00116     0xd4, 0xa4, 0x5c, 0xcc,
00117     0x5d, 0x65, 0xb6, 0x92,
00118     0x6c, 0x70, 0x48, 0x50,
00119     0xfd, 0xed, 0xb9, 0xda,
00120     0x5e, 0x15, 0x46, 0x57,
00121     0xa7, 0x8d, 0x9d, 0x84,
00122     0x90, 0xd8, 0xab, 0x00,
00123     0x8c, 0xbc, 0xd3, 0x0a,
00124     0xf7, 0xe4, 0x58, 0x05,
00125     0xb8, 0xb3, 0x45, 0x06,
00126     0xd0, 0x2c, 0x1e, 0x8f,
00127     0xca, 0x3f, 0x0f, 0x02,
00128     0xc1, 0xaf, 0xbd, 0x03,
00129     0x01, 0x13, 0x8a, 0x6b,
00130     0x3a, 0x91, 0x11, 0x41,
00131     0x4f, 0x67, 0xdc, 0xea,
00132     0x97, 0xf2, 0xcf, 0xce,
00133     0xf0, 0xb4, 0xe6, 0x73,
00134     0x96, 0xac, 0x74, 0x22,
00135     0xe7, 0xad, 0x35, 0x85,
00136     0xe2, 0xf9, 0x37, 0xe8,
00137     0x1c, 0x75, 0xdf, 0x6e,
00138     0x47, 0xf1, 0x1a, 0x71,
00139     0x1d, 0x29, 0xc5, 0x89,
00140     0x6f, 0xb7, 0x62, 0x0e,
00141     0xaa, 0x18, 0xbe, 0x1b,
00142     0xfc, 0x56, 0x3e, 0x4b,
00143     0xc6, 0xd2, 0x79, 0x20,
00144     0x9a, 0xdb, 0xc0, 0xfe,
00145     0x78, 0xcd, 0x5a, 0xf4,
00146     0x1f, 0xdd, 0xa8, 0x33,
00147     0x88, 0x07, 0xc7, 0x31,
00148     0xb1, 0x12, 0x10, 0x59,
00149     0x27, 0x80, 0xec, 0x5f,
00150     0x60, 0x51, 0x7f, 0xa9,
00151     0x19, 0xb5, 0x4a, 0x0d,
00152     0x2d, 0xe5, 0x7a, 0x9f,
00153     0x93, 0xc9, 0x9c, 0xef,
00154     0xa0, 0xe0, 0x3b, 0x4d,
00155     0xae, 0x2a, 0xf5, 0xb0,
00156     0xc8, 0xeb, 0xbb, 0x3c,
00157     0x83, 0x53, 0x99, 0x61,
00158     0x17, 0x2b, 0x04, 0x7e,
00159     0xba, 0x77, 0xd6, 0x26,
00160     0xe1, 0x69, 0x14, 0x63,
00161     0x55, 0x21, 0x0c, 0x7d,
00162 };
00163 
00164 const word32 Rijndael::Base::rcon[] = {
00165         0x01000000, 0x02000000, 0x04000000, 0x08000000,
00166         0x10000000, 0x20000000, 0x40000000, 0x80000000,
00167         0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
00168 };
00169 
00170 NAMESPACE_END
00171 
00172 #endif

Generated on Mon Aug 9 2010 15:56:35 for Crypto++ by  doxygen 1.7.1