passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-modules might be problematic. Click here for more details.

Files changed (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
sage/crypto/sboxes.py ADDED
@@ -0,0 +1,2090 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.modules sage.rings.finite_rings
3
+ r"""
4
+ S-Boxes used in cryptographic schemes
5
+
6
+ This module provides the following SBoxes:
7
+
8
+ constructions
9
+ - BrackenLeander ([BraLea2008]_)
10
+ - CarletTangTangLiao ([CTTL2014]_)
11
+ - Gold ([Gol1968]_)
12
+ - Kasami ([Kas1971]_)
13
+ - Niho ([Dob1999a]_)
14
+ - Welch ([Dob1999b]_)
15
+
16
+ 9 bit to 9 bit
17
+ - DryGASCON256 ([Rio2019]_)
18
+
19
+ 8 bit to 8 bit
20
+ - AES (FlexAEAD [NX2019]_) ([DR2002]_)
21
+ - Anubis ([BR2000a]_)
22
+ - ARIA_s2 ([KKPSSSYYLLCHH2004]_)
23
+ - BelT ([Bel2011]_)
24
+ - Camellia ([AIKMMNT2001]_)
25
+ - CMEA ([WSK1997]_)
26
+ - Chiasmus ([STW2013]_)
27
+ - CLEFIA_S0, CLEFIA_S1 ([SSAMI2007]_)
28
+ - Crypton_0_5 ([Lim]_)
29
+ - Crypton_1_0_S0, ..., Crypton_1_0_S3 ([Lim2001]_)
30
+ - CS_cipher ([SV2000]_)
31
+ - CSA ([WW2005]_)
32
+ - CSS ([BD2004]_)
33
+ - DBlock ([WZY2015]_)
34
+ - E2 ([KMAUTOM2000]_)
35
+ - Enocoro ([WFYTP2008]_)
36
+ - Fantomas ([GLSV2014]_)
37
+ - FLY ([KG2016]_)
38
+ - Fox ([VJ2004]_)
39
+ - Iceberg ([SPRQL2004]_)
40
+ - Iraqi (:wikipedia:`Iraqi_block_cipher`)
41
+ - iScream ([GLSVJGK2014]_)
42
+ - Kalyna_pi0, ..., Kalyna_pi3 ([OGKRKGBDDP2015]_)
43
+ - Khazad ([BR2000b]_)
44
+ - Kuznyechik (Kuznechik, Streebog, Stribog) ([Fed2015]_)
45
+ - Lilliput-AE ([ABCFHLLMRT2019]_)
46
+ - MD2 ([Kal1992]_)
47
+ - newDES ([Sco1985]_)
48
+ - Picaro ([PRC2012]_)
49
+ - Safer ([Mas1994]_)
50
+ - Scream ([CDL2015]_,[GLSVJGK2014]_)
51
+ - SEED_S0, SEED_S1 ([LLYCL2005]_)
52
+ - SKINNY_8 (ForkSkinny_8 [ALPRRV2019]_, Remus_8 [IKMP2019A]_, Romulus [IKMP2019B]_) ([BJKLMPSSS2016]_)
53
+ - Skipjack ([U.S1998]_)
54
+ - SNOW_3G_sq ([ETS2006a]_)
55
+ - SMS4 ([Ltd06]_)
56
+ - Turing ([RH2003b]_)
57
+ - Twofish_p0, Twofish_p1 ([SKWWHF1998]_)
58
+ - Whirlpool ([BR2000c]_)
59
+ - Zorro ([GGNS2013]_)
60
+ - ZUC_S0, ZUC_S1 ([ETS2011]_)
61
+
62
+ 7 bit to 7 bit
63
+ - Wage ([AAGMRZ2019]_)
64
+
65
+ 6 bit to 6 bit
66
+ - Fides_6 ([BBKMW2013]_)
67
+ - APN_6 ([BDMW2010]_)
68
+ - SC2000_6 ([SYYTIYTT2002]_)
69
+
70
+ 5 bit to 5 bit
71
+ - Ascon (ISAP [DEMMMPU2019]_) ([DEMS2016]_)
72
+ - DryGASCON128 ([Rio2019]_)
73
+ - Fides_5 ([BBKMW2013]_)
74
+ - SC2000_5 ([SYYTIYTT2002]_)
75
+ - Shamash ([PM2019])
76
+ - SYCON ([SMS2019]_)
77
+
78
+ 4 bit to 4 bit
79
+ - Elephant ([BCDM2019]_)
80
+ - KNOT ([ZDYBXJZ2019]_)
81
+ - Pyjamask_4 ([GJKPRSS2019]_)
82
+ - SATURNIN_0, SATURNIN_1 ([CDLNPPS2019]_)
83
+ - Spook (Clyde, Shadow) ([BBBCDGLLLMPPSW2019]_)
84
+ - TRIFLE ([DGMPPS2019]_)
85
+ - Yarara, Coral ([MP2019]_)
86
+ - DES_S1_1, ..., DES_S1_4, ..., DES_S8_4 ([U.S1999]_)
87
+ - Lucifer_S0, Lucifer_S1 ([Sor1984]_)
88
+ - GOST_1, ..., GOST_8 (http://www.cypherpunks.ru/pygost/)
89
+ - GOST2_1, GOST2_2 (http://www.cypherpunks.ru/pygost/)
90
+ - Magma_1, ..., Magma_8 ([Fed2015]_)
91
+ - GOST_IETF_1, ..., GOST_IETF_8 (http://www.cypherpunks.ru/pygost/)
92
+ - Hummingbird_2_S1, ..., Hummingbird_2_S4 ([ESSS2011]_)
93
+ - LBlock_0, ..., LBlock_9 ([WZ2011]_)
94
+ - SERPENT_S0, ..., SERPENT_S7 ([BAK1998]_)
95
+ - KLEIN ([GNL2011]_)
96
+ - MIBS ([ISSK2009)]
97
+ - Midori_Sb0 (MANTIS, CRAFT, WARP), Midori_Sb1 ([BBISHAR2015]_)
98
+ - Noekeon ([DPVAR2000]_)
99
+ - Piccolo ([SIHMAS2011]_)
100
+ - Panda ([YWHWXSW2014]_)
101
+ - PRESENT (CiliPadi [ZJRRS2019]_, PHOTON [BCDGNPY2019]_, ORANGE [CN2019]_) ([BKLPPRSV2007]_)
102
+ - GIFT (Fountain_1, HYENA [CDJN2019]_, TGIF [IKMPSSS2019]_) ([BPPSST2017]_)
103
+ - Fountain_1, Fountain_2, Fountain_3, Fountain_4 ([Zha2019]_)
104
+ - Pride ([ADKLPY2014]_)
105
+ - PRINCE ([BCGKKKLNPRRTY2012]_)
106
+ - Prost ([KLLRSY2014]_)
107
+ - Qarma_sigma0, Qarma_sigma1 (Qameleon [ABBDHR2019]_), Qarma_sigma2 ([Ava2017]_)
108
+ - REC_0 (earlier version of [ZBLRYV2015]_)
109
+ - Rectangle ([ZBLRYV2015]_)
110
+ - SC2000_4 ([SYYTIYTT2002]_)
111
+ - SKINNY_4 (ForkSkinny_4 [ALPRRV2019]_, Remus_4 [IKMP2019A]_) ([BJKLMPSSS2016]_)
112
+ - TWINE ([SMMK2013]_)
113
+
114
+ - Luffa_v1 ([DCSW2008]_)
115
+ - Luffa ([DCSW2008]_)
116
+ - BLAKE_1, ..., BLAKE_9 ([AHMP2008]_)
117
+ - JH_S0, JH_S1 ([Wu2009]_)
118
+ - SMASH_256_S1, ..., SMASH_256_S3 ([Knu2005]_)
119
+
120
+ - Anubis_S0, Anubis_S1 ([BR2000a]_)
121
+ - CLEFIA_SS0, ..., CLEFIA_SS3 ([SSAMI2007]_)
122
+ - Enocoro_S4 ([WFYTP2008]_)
123
+ - Iceberg_S0, Iceberg_S1 ([SPRQL2004]_)
124
+ - Khazad_P, Khazad_Q ([BR2000b]_)
125
+ - Whirlpool_E, Whirlpool_R ([BR2000c]_)
126
+ - CS_cipher_F, CS_cipher_G ([SV2000]_)
127
+ - Fox_S1, ..., Fox_S3 ([VJ2004]_)
128
+ - Twofish_Q0_T0, ..., Twofish_Q0_T3, Twofish_Q1_T0, ..., Twofish_Q1_T3 ([SKWWHF1998]_)
129
+ - Kuznyechik_nu0, Kuznyechik_nu1, Kuznyechik_sigma, Kuznyechik_phi ([BPU2016]_)
130
+
131
+ - UDCIKMP11 ([UDCIKMP2011]_)
132
+ - Optimal_S0, ..., Optimal_S15 ([LP2007]_)
133
+ - Serpent_type_S0, ..., Serpent_type_S19 ([LP2007]_)
134
+ - Golden_S0, ..., Golden_S3 ([Saa2011]_)
135
+
136
+ - representatives for all 302 affine equivalence classes ([dCa2007]_)
137
+
138
+ 3 bit to 3 bit
139
+ - SEA ([SPGQ2006]_)
140
+ - PRINTcipher ([KLPR2010]_)
141
+ - Pyjamask_3 ([GJKPRSS2019]_)
142
+
143
+ Additionally this modules offers a dictionary `sboxes` of all implemented above S-boxes
144
+ for the purpose of easy iteration over all available S-boxes.
145
+
146
+ EXAMPLES:
147
+
148
+ We can print the S-Boxes with differential uniformity 2::
149
+
150
+ sage: from sage.crypto.sboxes import sboxes
151
+ sage: sorted(name for name, s in sboxes.items()
152
+ ....: if s.differential_uniformity() == 2)
153
+ ['APN_6',
154
+ 'Fides_5',
155
+ 'Fides_6',
156
+ 'PRINTcipher',
157
+ 'Pyjamask_3',
158
+ 'SC2000_5',
159
+ 'SEA',
160
+ 'Shamash']
161
+
162
+ AUTHOR:
163
+
164
+ - Leo Perrin: initial collection of sboxes
165
+ - Friedrich Wiemer (2017-05-12): refactored list for inclusion in Sage
166
+ - Lukas Stennes (2019-06-25): added NIST LWC round 1 candidates
167
+ """
168
+ import sys
169
+
170
+ from sage.crypto.sbox import SBox
171
+ from sage.misc.functional import is_odd, is_even
172
+
173
+
174
+ def bracken_leander(n):
175
+ r"""
176
+ Return the Bracken-Leander construction.
177
+
178
+ For n = 4*k and odd k, the construction is `x \mapsto x^{2^{2k} + 2^k + 1}`
179
+ over `\GF{2^n}`
180
+
181
+ INPUT:
182
+
183
+ - ``n`` -- size of the S-Box
184
+
185
+ EXAMPLES::
186
+
187
+ sage: from sage.crypto.sboxes import bracken_leander
188
+ sage: sbox = bracken_leander(12); [sbox(i) for i in range(8)]
189
+ [0, 1, 2742, 4035, 1264, 408, 1473, 1327]
190
+ """
191
+ if n % 4 == 1 or is_even(n / 4):
192
+ raise TypeError("Bracken-Leander functions are only defined for n = 4k with k odd")
193
+
194
+ k = n / 4
195
+ e = 2**(2*k) + 2**k + 1
196
+ return monomial_function(n, e)
197
+
198
+
199
+ def carlet_tang_tang_liao(n, c=None, bf=None):
200
+ r"""
201
+ Return the Carlet-Tang-Tang-Liao construction.
202
+
203
+ See [CTTL2014]_ for its definition.
204
+
205
+ INPUT:
206
+
207
+ - ``n`` -- integer; the bit length of inputs and outputs, has to be even
208
+ and `\geq 6`
209
+ - ``c`` -- element of `\GF{2^{n-1}}` used in the construction
210
+ (default: random element)
211
+ - ``f`` -- function from `\GF{2^n} \to \GF{2}` or BooleanFunction on `n-1`
212
+ bits (default: ``x -> (1/(x+1)).trace())``)
213
+
214
+ EXAMPLES::
215
+
216
+ sage: from sage.crypto.sboxes import carlet_tang_tang_liao as cttl
217
+ sage: cttl(6).differential_uniformity() in [4, 64]
218
+ True
219
+ """
220
+ from sage.crypto.boolean_function import BooleanFunction
221
+ from sage.rings.finite_rings.finite_field_constructor import GF
222
+
223
+ if n < 6 or n % 2:
224
+ raise TypeError("n >= 6 has to be even")
225
+ K = GF((2, n - 1))
226
+ L = GF((2, n))
227
+
228
+ if c is None:
229
+ c = K.random_element()
230
+ while c.trace() == 0 or (1/c).trace() == 0:
231
+ c = K.random_element()
232
+ elif c.trace() == 0 or (1/c).trace() == 0:
233
+ raise TypeError("c.trace() and (1/c).trace() have to be 1")
234
+
235
+ if bf is None:
236
+ def bf(x):
237
+ if x == 1:
238
+ return 0
239
+ return (1/(x+1)).trace()
240
+
241
+ elif isinstance(bf, (BooleanFunction,)):
242
+ bf_f2 = bf
243
+
244
+ def bf(x):
245
+ xprime = map(int, x.polynomial().list())
246
+ xprime += [0]*(n-1 - len(xprime))
247
+ return int(bf_f2(xprime))
248
+
249
+ def f(x):
250
+ xs = x.polynomial().list()
251
+ xs += [0]*(n - len(xs))
252
+ xprime = K(xs[:n-1])
253
+
254
+ if xprime == 0:
255
+ res = [0]*(n-1), bf(xprime/c) + xs[-1]
256
+ elif xs[-1] == 0:
257
+ res = (1/xprime).polynomial().list(), bf(xprime)
258
+ else:
259
+ res = (c/xprime).polynomial().list(), bf(xprime/c) + 1
260
+
261
+ res = res[0] + [0]*(n-1-len(res[0])) + [res[1]]
262
+
263
+ return L(res)
264
+
265
+ return SBox([f(L(x)) for x in GF(2)**n])
266
+
267
+
268
+ def gold(n, i):
269
+ r"""
270
+ Return the Gold function defined by `x \mapsto x^{2^i + 1}` over `\GF{2^n}`.
271
+
272
+ INPUT:
273
+
274
+ - ``n`` -- size of the S-Box
275
+ - ``i`` -- positive integer
276
+
277
+ EXAMPLES::
278
+
279
+ sage: from sage.crypto.sboxes import gold
280
+ sage: gold(3, 1)
281
+ (0, 1, 3, 4, 5, 6, 7, 2)
282
+ sage: gold(3, 1).differential_uniformity()
283
+ 2
284
+ sage: gold(4, 2)
285
+ (0, 1, 6, 6, 7, 7, 7, 6, 1, 7, 1, 6, 1, 6, 7, 1)
286
+ """
287
+ e = 2**i + 1
288
+ return monomial_function(n, e)
289
+
290
+
291
+ def kasami(n, i):
292
+ r"""
293
+ Return the Kasami function defined by `x \mapsto x^{2^{2i} - 2^i + 1}` over `\GF{2^n}`.
294
+
295
+ INPUT:
296
+
297
+ - ``n`` -- size of the S-Box
298
+ - ``i`` -- positive integer
299
+
300
+ EXAMPLES::
301
+
302
+ sage: from sage.crypto.sboxes import kasami
303
+ sage: kasami(3, 1)
304
+ (0, 1, 3, 4, 5, 6, 7, 2)
305
+ sage: from sage.crypto.sboxes import gold
306
+ sage: kasami(3, 1) == gold(3, 1)
307
+ True
308
+ sage: kasami(4, 2)
309
+ (0, 1, 13, 11, 14, 9, 6, 7, 10, 4, 15, 2, 8, 3, 5, 12)
310
+ sage: kasami(4, 2) != gold(4, 2)
311
+ True
312
+ """
313
+ e = 2**(2*i) - 2**i + 1
314
+ return monomial_function(n, e)
315
+
316
+
317
+ def niho(n):
318
+ r"""
319
+ Return the Niho function over `\GF{2^n}`.
320
+
321
+ It is defined by `x \mapsto x^{2^t + 2^s - 1}` with `s = t/2` if t is even
322
+ or `s = (3t+1)/2` if t is odd.
323
+
324
+ INPUT:
325
+
326
+ - ``n`` -- size of the S-Box
327
+
328
+ EXAMPLES::
329
+
330
+ sage: from sage.crypto.sboxes import niho
331
+ sage: niho(3)
332
+ (0, 1, 7, 2, 3, 4, 5, 6)
333
+
334
+ sage: niho(3).differential_uniformity()
335
+ 2
336
+ """
337
+ if not is_odd(n):
338
+ raise TypeError("Niho functions are only defined for n odd")
339
+
340
+ t = (n - 1) / 2
341
+
342
+ if is_even(t):
343
+ e = 2**t + 2**(t/2) - 1
344
+ else:
345
+ e = 2**t + 2**((3*t+1)/2) - 1
346
+
347
+ return monomial_function(n, e)
348
+
349
+
350
+ def welch(n):
351
+ r"""
352
+ Return the Welch function defined by `x \mapsto x^{2^{(n-1)/2} + 3}` over `\GF{2^n}`.
353
+
354
+ INPUT:
355
+
356
+ - ``n`` -- size of the S-Box
357
+
358
+ EXAMPLES::
359
+
360
+ sage: from sage.crypto.sboxes import welch
361
+ sage: welch(3)
362
+ (0, 1, 7, 2, 3, 4, 5, 6)
363
+ sage: welch(3).differential_uniformity()
364
+ 2
365
+ """
366
+ if not is_odd(n):
367
+ raise TypeError("Welch functions are only defined for odd n")
368
+
369
+ t = (n - 1) / 2
370
+ e = 2**t + 3
371
+ return monomial_function(n, e)
372
+
373
+
374
+ def monomial_function(n, e):
375
+ r"""
376
+ Return an S-Box as a function `x^e` defined over `\GF{2^n}`.
377
+
378
+ INPUT:
379
+
380
+ - ``n`` -- size of the S-Box (i.e. the degree of the finite field extension)
381
+ - ``e`` -- exponent of the monomial function
382
+
383
+ EXAMPLES::
384
+
385
+ sage: from sage.crypto.sboxes import monomial_function
386
+ sage: S = monomial_function(7, 3)
387
+ sage: S.differential_uniformity()
388
+ 2
389
+ sage: S.input_size()
390
+ 7
391
+ sage: S.is_permutation()
392
+ True
393
+ """
394
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
395
+ from sage.rings.finite_rings.finite_field_constructor import GF
396
+
397
+ base_ring = GF((2, n), name='x')
398
+ R = PolynomialRing(base_ring, name='X')
399
+ X = R.gen()
400
+ return SBox(X**e)
401
+
402
+
403
+ def inversion(n):
404
+ r"""
405
+ Return the S-Box constructed from the inversion mapping over `\GF{2^n}`
406
+ extending `0 \mapsto 0`.
407
+
408
+ INPUT:
409
+
410
+ - ``n`` -- size of the S-Box
411
+
412
+ EXAMPLES::
413
+
414
+ sage: from sage.crypto.sboxes import inversion
415
+ sage: S4 = inversion(4)
416
+ sage: S4.differential_uniformity()
417
+ 4
418
+ sage: S5 = inversion(5)
419
+ sage: S5.differential_uniformity()
420
+ 2
421
+ """
422
+ return monomial_function(n, 2**n - 2)
423
+
424
+
425
+ def chi(n):
426
+ r"""
427
+ Return the `\chi` function defined over `\GF{2^n}` used in the nonlinear
428
+ layer of Keccak and Xoodyak.
429
+
430
+ INPUT:
431
+
432
+ - ``n`` -- size of the S-Box
433
+
434
+ EXAMPLES::
435
+
436
+ sage: from sage.crypto.sboxes import chi
437
+ sage: chi(3)
438
+ (0, 3, 6, 1, 5, 4, 2, 7)
439
+ sage: chi(3).is_permutation()
440
+ True
441
+ sage: chi(4).is_permutation()
442
+ False
443
+ sage: chi(5)
444
+ (0, 9, 18, 11, 5, 12, 22, 15, 10, 3, 24, 1, 13, 4, 30, 7, 20, 21, 6,
445
+ 23, 17, 16, 2, 19, 26, 27, 8, 25, 29, 28, 14, 31)
446
+ """
447
+ from sage.rings.integer_ring import ZZ
448
+ from sage.rings.finite_rings.finite_field_constructor import GF
449
+ from sage.modules.free_module_element import vector
450
+
451
+ table = [0]*(1 << n)
452
+
453
+ for x in range(1 << n):
454
+ vx = vector(GF(2), ZZ(x).digits(base=2, padto=n))
455
+ vy = [vx[i] + (vx[(i+1) % n] + 1)*vx[(i+2) % n] for i in range(n)]
456
+ y = ZZ(vy, base=2)
457
+ table[x] = y
458
+
459
+ return SBox(table)
460
+
461
+
462
+ # Bijective S-Boxes mapping 9 bits to 9
463
+ # =====================================
464
+
465
+ DryGASCON256 = SBox([
466
+ 0x10, 0x93, 0x11f, 0x9d, 0x1f, 0x9c, 0x113, 0x91, 0x2a, 0xa9, 0x127, 0xa5, 0x27, 0xa4, 0x129, 0xab,
467
+ 0x2c, 0xaf, 0x123, 0xa1, 0x23, 0xa0, 0x12f, 0xad, 0x1a, 0x99, 0x117, 0x95, 0x17, 0x94, 0x119, 0x9b,
468
+ 0xf8, 0x7b, 0x1f7, 0x75, 0xf7, 0x74, 0x1fb, 0x79, 0xca, 0x49, 0x1c7, 0x45, 0xc7, 0x44, 0x1c9, 0x4b,
469
+ 0xcc, 0x4f, 0x1c3, 0x41, 0xc3, 0x40, 0x1cf, 0x4d, 0xf2, 0x71, 0x1ff, 0x7d, 0xff, 0x7c, 0x1f1, 0x73,
470
+ 0xe0, 0x63, 0x1ef, 0x6d, 0xef, 0x6c, 0x1e3, 0x61, 0xda, 0x59, 0x1d7, 0x55, 0xd7, 0x54, 0x1d9, 0x5b,
471
+ 0xdc, 0x5f, 0x1d3, 0x51, 0xd3, 0x50, 0x1df, 0x5d, 0xea, 0x69, 0x1e7, 0x65, 0xe7, 0x64, 0x1e9, 0x6b,
472
+ 0x38, 0xbb, 0x137, 0xb5, 0x37, 0xb4, 0x13b, 0xb9, 0x0a, 0x89, 0x107, 0x85, 0x07, 0x84, 0x109, 0x8b,
473
+ 0x0c, 0x8f, 0x103, 0x81, 0x03, 0x80, 0x10f, 0x8d, 0x32, 0xb1, 0x13f, 0xbd, 0x3f, 0xbc, 0x131, 0xb3,
474
+ 0x1b1, 0x1b2, 0xbe, 0x1bc, 0x1be, 0x1bd, 0xb2, 0x1b0, 0x18b, 0x188, 0x86, 0x184, 0x186, 0x185, 0x88, 0x18a,
475
+ 0x18d, 0x18e, 0x82, 0x180, 0x182, 0x181, 0x8e, 0x18c, 0x1bb, 0x1b8, 0xb6, 0x1b4, 0x1b6, 0x1b5, 0xb8, 0x1ba,
476
+ 0x179, 0x17a, 0x76, 0x174, 0x176, 0x175, 0x7a, 0x178, 0x14b, 0x148, 0x46, 0x144, 0x146, 0x145, 0x48, 0x14a,
477
+ 0x14d, 0x14e, 0x42, 0x140, 0x142, 0x141, 0x4e, 0x14c, 0x173, 0x170, 0x7e, 0x17c, 0x17e, 0x17d, 0x70, 0x172,
478
+ 0x161, 0x162, 0x6e, 0x16c, 0x16e, 0x16d, 0x62, 0x160, 0x15b, 0x158, 0x56, 0x154, 0x156, 0x155, 0x58, 0x15a,
479
+ 0x15d, 0x15e, 0x52, 0x150, 0x152, 0x151, 0x5e, 0x15c, 0x16b, 0x168, 0x66, 0x164, 0x166, 0x165, 0x68, 0x16a,
480
+ 0x199, 0x19a, 0x96, 0x194, 0x196, 0x195, 0x9a, 0x198, 0x1ab, 0x1a8, 0xa6, 0x1a4, 0x1a6, 0x1a5, 0xa8, 0x1aa,
481
+ 0x1ad, 0x1ae, 0xa2, 0x1a0, 0x1a2, 0x1a1, 0xae, 0x1ac, 0x193, 0x190, 0x9e, 0x19c, 0x19e, 0x19d, 0x90, 0x192,
482
+ 0x1d2, 0x1d1, 0x1d, 0xde, 0x1dd, 0x1de, 0x1d, 0xd2, 0x1e8, 0x1eb, 0x1e, 0xe6, 0x1e5, 0x1e6, 0x1e, 0xe8,
483
+ 0x1ee, 0x1ed, 0x1e, 0xe2, 0x1e1, 0x1e2, 0x1e, 0xee, 0x1d8, 0x1db, 0x1d, 0xd6, 0x1d5, 0x1d6, 0x1d, 0xd8,
484
+ 0x13a, 0x139, 0x13, 0x36, 0x135, 0x136, 0x13, 0x3a, 0x108, 0x10b, 0x10, 0x06, 0x105, 0x106, 0x10, 0x08,
485
+ 0x10e, 0x10d, 0x10, 0x02, 0x101, 0x102, 0x10, 0x0e, 0x130, 0x133, 0x13, 0x3e, 0x13d, 0x13e, 0x13, 0x30,
486
+ 0x122, 0x121, 0x12, 0x2e, 0x12d, 0x12e, 0x12, 0x22, 0x118, 0x11b, 0x11, 0x16, 0x115, 0x116, 0x11, 0x18,
487
+ 0x11e, 0x11d, 0x11, 0x12, 0x111, 0x112, 0x11, 0x1e, 0x128, 0x12b, 0x12, 0x26, 0x125, 0x126, 0x12, 0x28,
488
+ 0x1fa, 0x1f9, 0x1f, 0xf6, 0x1f5, 0x1f6, 0x1f, 0xfa, 0x1c8, 0x1cb, 0x1c, 0xc6, 0x1c5, 0x1c6, 0x1c, 0xc8,
489
+ 0x1ce, 0x1cd, 0x1c, 0xc2, 0x1c1, 0x1c2, 0x1c, 0xce, 0x1f0, 0x1f3, 0x1f, 0xfe, 0x1fd, 0x1fe, 0x1f, 0xf0,
490
+ 0x33, 0xb0, 0x3d, 0x1bf, 0x3c, 0xbf, 0x31, 0x1b3, 0x09, 0x8a, 0x05, 0x187, 0x04, 0x87, 0x0b, 0x189,
491
+ 0x0f, 0x8c, 0x01, 0x183, 0x00, 0x83, 0x0d, 0x18f, 0x39, 0xba, 0x35, 0x1b7, 0x34, 0xb7, 0x3b, 0x1b9,
492
+ 0xfb, 0x78, 0xf5, 0x177, 0xf4, 0x77, 0xf9, 0x17b, 0xc9, 0x4a, 0xc5, 0x147, 0xc4, 0x47, 0xcb, 0x149,
493
+ 0xcf, 0x4c, 0xc1, 0x143, 0xc0, 0x43, 0xcd, 0x14f, 0xf1, 0x72, 0xfd, 0x17f, 0xfc, 0x7f, 0xf3, 0x171,
494
+ 0xe3, 0x60, 0xed, 0x16f, 0xec, 0x6f, 0xe1, 0x163, 0xd9, 0x5a, 0xd5, 0x157, 0xd4, 0x57, 0xdb, 0x159,
495
+ 0xdf, 0x5c, 0xd1, 0x153, 0xd0, 0x53, 0xdd, 0x15f, 0xe9, 0x6a, 0xe5, 0x167, 0xe4, 0x67, 0xeb, 0x169,
496
+ 0x1b, 0x98, 0x15, 0x197, 0x14, 0x97, 0x19, 0x19b, 0x29, 0xaa, 0x25, 0x1a7, 0x24, 0xa7, 0x2b, 0x1a9,
497
+ 0x2f, 0xac, 0x21, 0x1a3, 0x20, 0xa3, 0x2d, 0x1af, 0x11, 0x92, 0x1d, 0x19f, 0x1c, 0x9f, 0x13, 0x191])
498
+
499
+ # Bijective S-Boxes mapping 8 bits to 8
500
+ # =====================================
501
+
502
+ AES = SBox([
503
+ 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
504
+ 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
505
+ 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
506
+ 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
507
+ 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
508
+ 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
509
+ 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
510
+ 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
511
+ 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
512
+ 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
513
+ 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
514
+ 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
515
+ 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
516
+ 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
517
+ 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
518
+ 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16])
519
+
520
+ FlexAEAD = AES
521
+
522
+ Anubis = SBox([
523
+ 0xa7,0xd3,0xe6,0x71,0xd0,0xac,0x4d,0x79,0x3a,0xc9,0x91,0xfc,0x1e,0x47,0x54,0xbd,
524
+ 0x8c,0xa5,0x7a,0xfb,0x63,0xb8,0xdd,0xd4,0xe5,0xb3,0xc5,0xbe,0xa9,0x88,0x0c,0xa2,
525
+ 0x39,0xdf,0x29,0xda,0x2b,0xa8,0xcb,0x4c,0x4b,0x22,0xaa,0x24,0x41,0x70,0xa6,0xf9,
526
+ 0x5a,0xe2,0xb0,0x36,0x7d,0xe4,0x33,0xff,0x60,0x20,0x08,0x8b,0x5e,0xab,0x7f,0x78,
527
+ 0x7c,0x2c,0x57,0xd2,0xdc,0x6d,0x7e,0x0d,0x53,0x94,0xc3,0x28,0x27,0x06,0x5f,0xad,
528
+ 0x67,0x5c,0x55,0x48,0x0e,0x52,0xea,0x42,0x5b,0x5d,0x30,0x58,0x51,0x59,0x3c,0x4e,
529
+ 0x38,0x8a,0x72,0x14,0xe7,0xc6,0xde,0x50,0x8e,0x92,0xd1,0x77,0x93,0x45,0x9a,0xce,
530
+ 0x2d,0x03,0x62,0xb6,0xb9,0xbf,0x96,0x6b,0x3f,0x07,0x12,0xae,0x40,0x34,0x46,0x3e,
531
+ 0xdb,0xcf,0xec,0xcc,0xc1,0xa1,0xc0,0xd6,0x1d,0xf4,0x61,0x3b,0x10,0xd8,0x68,0xa0,
532
+ 0xb1,0x0a,0x69,0x6c,0x49,0xfa,0x76,0xc4,0x9e,0x9b,0x6e,0x99,0xc2,0xb7,0x98,0xbc,
533
+ 0x8f,0x85,0x1f,0xb4,0xf8,0x11,0x2e,0x00,0x25,0x1c,0x2a,0x3d,0x05,0x4f,0x7b,0xb2,
534
+ 0x32,0x90,0xaf,0x19,0xa3,0xf7,0x73,0x9d,0x15,0x74,0xee,0xca,0x9f,0x0f,0x1b,0x75,
535
+ 0x86,0x84,0x9c,0x4a,0x97,0x1a,0x65,0xf6,0xed,0x09,0xbb,0x26,0x83,0xeb,0x6f,0x81,
536
+ 0x04,0x6a,0x43,0x01,0x17,0xe1,0x87,0xf5,0x8d,0xe3,0x23,0x80,0x44,0x16,0x66,0x21,
537
+ 0xfe,0xd5,0x31,0xd9,0x35,0x18,0x02,0x64,0xf2,0xf1,0x56,0xcd,0x82,0xc8,0xba,0xf0,
538
+ 0xef,0xe9,0xe8,0xfd,0x89,0xd7,0xc7,0xb5,0xa4,0x2f,0x95,0x13,0x0b,0xf3,0xe0,0x37])
539
+
540
+ ARIA_s2 = SBox([
541
+ 0xe2,0x4e,0x54,0xfc,0x94,0xc2,0x4a,0xcc,0x62,0x0d,0x6a,0x46,0x3c,0x4d,0x8b,0xd1,
542
+ 0x5e,0xfa,0x64,0xcb,0xb4,0x97,0xbe,0x2b,0xbc,0x77,0x2e,0x03,0xd3,0x19,0x59,0xc1,
543
+ 0x1d,0x06,0x41,0x6b,0x55,0xf0,0x99,0x69,0xea,0x9c,0x18,0xae,0x63,0xdf,0xe7,0xbb,
544
+ 0x00,0x73,0x66,0xfb,0x96,0x4c,0x85,0xe4,0x3a,0x09,0x45,0xaa,0x0f,0xee,0x10,0xeb,
545
+ 0x2d,0x7f,0xf4,0x29,0xac,0xcf,0xad,0x91,0x8d,0x78,0xc8,0x95,0xf9,0x2f,0xce,0xcd,
546
+ 0x08,0x7a,0x88,0x38,0x5c,0x83,0x2a,0x28,0x47,0xdb,0xb8,0xc7,0x93,0xa4,0x12,0x53,
547
+ 0xff,0x87,0x0e,0x31,0x36,0x21,0x58,0x48,0x01,0x8e,0x37,0x74,0x32,0xca,0xe9,0xb1,
548
+ 0xb7,0xab,0x0c,0xd7,0xc4,0x56,0x42,0x26,0x07,0x98,0x60,0xd9,0xb6,0xb9,0x11,0x40,
549
+ 0xec,0x20,0x8c,0xbd,0xa0,0xc9,0x84,0x04,0x49,0x23,0xf1,0x4f,0x50,0x1f,0x13,0xdc,
550
+ 0xd8,0xc0,0x9e,0x57,0xe3,0xc3,0x7b,0x65,0x3b,0x02,0x8f,0x3e,0xe8,0x25,0x92,0xe5,
551
+ 0x15,0xdd,0xfd,0x17,0xa9,0xbf,0xd4,0x9a,0x7e,0xc5,0x39,0x67,0xfe,0x76,0x9d,0x43,
552
+ 0xa7,0xe1,0xd0,0xf5,0x68,0xf2,0x1b,0x34,0x70,0x05,0xa3,0x8a,0xd5,0x79,0x86,0xa8,
553
+ 0x30,0xc6,0x51,0x4b,0x1e,0xa6,0x27,0xf6,0x35,0xd2,0x6e,0x24,0x16,0x82,0x5f,0xda,
554
+ 0xe6,0x75,0xa2,0xef,0x2c,0xb2,0x1c,0x9f,0x5d,0x6f,0x80,0x0a,0x72,0x44,0x9b,0x6c,
555
+ 0x90,0x0b,0x5b,0x33,0x7d,0x5a,0x52,0xf3,0x61,0xa1,0xf7,0xb0,0xd6,0x3f,0x7c,0x6d,
556
+ 0xed,0x14,0xe0,0xa5,0x3d,0x22,0xb3,0xf8,0x89,0xde,0x71,0x1a,0xaf,0xba,0xb5,0x81])
557
+
558
+ BelT = SBox([
559
+ 0xb1,0x94,0xba,0xc8,0x0a,0x08,0xf5,0x3b,0x36,0x6d,0x00,0x8e,0x58,0x4a,0x5d,0xe4,
560
+ 0x85,0x04,0xfa,0x9d,0x1b,0xb6,0xc7,0xac,0x25,0x2e,0x72,0xc2,0x02,0xfd,0xce,0x0d,
561
+ 0x5b,0xe3,0xd6,0x12,0x17,0xb9,0x61,0x81,0xfe,0x67,0x86,0xad,0x71,0x6b,0x89,0x0b,
562
+ 0x5c,0xb0,0xc0,0xff,0x33,0xc3,0x56,0xb8,0x35,0xc4,0x05,0xae,0xd8,0xe0,0x7f,0x99,
563
+ 0xe1,0x2b,0xdc,0x1a,0xe2,0x82,0x57,0xec,0x70,0x3f,0xcc,0xf0,0x95,0xee,0x8d,0xf1,
564
+ 0xc1,0xab,0x76,0x38,0x9f,0xe6,0x78,0xca,0xf7,0xc6,0xf8,0x60,0xd5,0xbb,0x9c,0x4f,
565
+ 0xf3,0x3c,0x65,0x7b,0x63,0x7c,0x30,0x6a,0xdd,0x4e,0xa7,0x79,0x9e,0xb2,0x3d,0x31,
566
+ 0x3e,0x98,0xb5,0x6e,0x27,0xd3,0xbc,0xcf,0x59,0x1e,0x18,0x1f,0x4c,0x5a,0xb7,0x93,
567
+ 0xe9,0xde,0xe7,0x2c,0x8f,0x0c,0x0f,0xa6,0x2d,0xdb,0x49,0xf4,0x6f,0x73,0x96,0x47,
568
+ 0x06,0x07,0x53,0x16,0xed,0x24,0x7a,0x37,0x39,0xcb,0xa3,0x83,0x03,0xa9,0x8b,0xf6,
569
+ 0x92,0xbd,0x9b,0x1c,0xe5,0xd1,0x41,0x01,0x54,0x45,0xfb,0xc9,0x5e,0x4d,0x0e,0xf2,
570
+ 0x68,0x20,0x80,0xaa,0x22,0x7d,0x64,0x2f,0x26,0x87,0xf9,0x34,0x90,0x40,0x55,0x11,
571
+ 0xbe,0x32,0x97,0x13,0x43,0xfc,0x9a,0x48,0xa0,0x2a,0x88,0x5f,0x19,0x4b,0x09,0xa1,
572
+ 0x7e,0xcd,0xa4,0xd0,0x15,0x44,0xaf,0x8c,0xa5,0x84,0x50,0xbf,0x66,0xd2,0xe8,0x8a,
573
+ 0xa2,0xd7,0x46,0x52,0x42,0xa8,0xdf,0xb3,0x69,0x74,0xc5,0x51,0xeb,0x23,0x29,0x21,
574
+ 0xd4,0xef,0xd9,0xb4,0x3a,0x62,0x28,0x75,0x91,0x14,0x10,0xea,0x77,0x6c,0xda,0x1d])
575
+
576
+ Camellia = SBox([
577
+ 112,130, 44,236,179, 39,192,229,228,133, 87, 53,234, 12,174, 65,
578
+ 35,239,107,147, 69, 25,165, 33,237, 14, 79, 78, 29,101,146,189,
579
+ 134,184,175,143,124,235, 31,206, 62, 48,220, 95, 94,197, 11, 26,
580
+ 166,225, 57,202,213, 71, 93, 61,217, 1, 90,214, 81, 86,108, 77,
581
+ 139, 13,154,102,251,204,176, 45,116, 18, 43, 32,240,177,132,153,
582
+ 223, 76,203,194, 52,126,118, 5,109,183,169, 49,209, 23, 4,215,
583
+ 20, 88, 58, 97,222, 27, 17, 28, 50, 15,156, 22, 83, 24,242, 34,
584
+ 254, 68,207,178,195,181,122,145, 36, 8,232,168, 96,252,105, 80,
585
+ 170,208,160,125,161,137, 98,151, 84, 91, 30,149,224,255,100,210,
586
+ 16,196, 0, 72,163,247,117,219,138, 3,230,218, 9, 63,221,148,
587
+ 135, 92,131, 2,205, 74,144, 51,115,103,246,243,157,127,191,226,
588
+ 82,155,216, 38,200, 55,198, 59,129,150,111, 75, 19,190, 99, 46,
589
+ 233,121,167,140,159,110,188,142, 41,245,249,182, 47,253,180, 89,
590
+ 120,152, 6,106,231, 70,113,186,212, 37,171, 66,136,162,141,250,
591
+ 114, 7,185, 85,248,238,172, 10, 54, 73, 42,104, 60, 56,241,164,
592
+ 64, 40,211,123,187,201, 67,193, 21,227,173,244,119,199,128,158])
593
+
594
+ # source: https://www.schneier.com/academic/paperfiles/paper-cmea.pdf
595
+ CMEA = SBox([
596
+ 0xd9,0x23,0x5f,0xe6,0xca,0x68,0x97,0xb0,0x7b,0xf2,0x0c,0x34,0x11,0xa5,0x8d,0x4e,
597
+ 0x0a,0x46,0x77,0x8d,0x10,0x9f,0x5e,0x62,0xf1,0x34,0xec,0xa5,0xc9,0xb3,0xd8,0x2b,
598
+ 0x59,0x47,0xe3,0xd2,0xff,0xae,0x64,0xca,0x15,0x8b,0x7d,0x38,0x21,0xbc,0x96,0x00,
599
+ 0x49,0x56,0x23,0x15,0x97,0xe4,0xcb,0x6f,0xf2,0x70,0x3c,0x88,0xba,0xd1,0x0d,0xae,
600
+ 0xe2,0x38,0xba,0x44,0x9f,0x83,0x5d,0x1c,0xde,0xab,0xc7,0x65,0xf1,0x76,0x09,0x20,
601
+ 0x86,0xbd,0x0a,0xf1,0x3c,0xa7,0x29,0x93,0xcb,0x45,0x5f,0xe8,0x10,0x74,0x62,0xde,
602
+ 0xb8,0x77,0x80,0xd1,0x12,0x26,0xac,0x6d,0xe9,0xcf,0xf3,0x54,0x3a,0x0b,0x95,0x4e,
603
+ 0xb1,0x30,0xa4,0x96,0xf8,0x57,0x49,0x8e,0x05,0x1f,0x62,0x7c,0xc3,0x2b,0xda,0xed,
604
+ 0xbb,0x86,0x0d,0x7a,0x97,0x13,0x6c,0x4e,0x51,0x30,0xe5,0xf2,0x2f,0xd8,0xc4,0xa9,
605
+ 0x91,0x76,0xf0,0x17,0x43,0x38,0x29,0x84,0xa2,0xdb,0xef,0x65,0x5e,0xca,0x0d,0xbc,
606
+ 0xe7,0xfa,0xd8,0x81,0x6f,0x00,0x14,0x42,0x25,0x7c,0x5d,0xc9,0x9e,0xb6,0x33,0xab,
607
+ 0x5a,0x6f,0x9b,0xd9,0xfe,0x71,0x44,0xc5,0x37,0xa2,0x88,0x2d,0x00,0xb6,0x13,0xec,
608
+ 0x4e,0x96,0xa8,0x5a,0xb5,0xd7,0xc3,0x8d,0x3f,0xf2,0xec,0x04,0x60,0x71,0x1b,0x29,
609
+ 0x04,0x79,0xe3,0xc7,0x1b,0x66,0x81,0x4a,0x25,0x9d,0xdc,0x5f,0x3e,0xb0,0xf8,0xa2,
610
+ 0x91,0x34,0xf6,0x5c,0x67,0x89,0x73,0x05,0x22,0xaa,0xcb,0xee,0xbf,0x18,0xd0,0x4d,
611
+ 0xf5,0x36,0xae,0x01,0x2f,0x94,0xc3,0x49,0x8b,0xbd,0x58,0x12,0xe0,0x77,0x6c,0xda])
612
+
613
+ Chiasmus = SBox([
614
+ 0x65,0x33,0xcf,0xb9,0x37,0x64,0xcd,0xf3,0x26,0x3a,0xc1,0xa2,0x72,0x8a,0x8f,0xe3,
615
+ 0xfd,0x56,0xb3,0x0f,0x10,0x2b,0x3e,0xa0,0xbd,0x1e,0xab,0x1d,0x9c,0xe2,0x87,0x98,
616
+ 0xa8,0xd3,0xb4,0xdf,0x92,0x75,0x3b,0x39,0x20,0xa5,0xfa,0x1b,0xbe,0x90,0xf6,0x09,
617
+ 0xe5,0x61,0xc4,0xc9,0x06,0xc2,0xa6,0x1c,0xf9,0x94,0x7b,0x53,0x73,0x01,0x25,0x9a,
618
+ 0x1a,0xff,0xe9,0x5a,0x76,0x13,0x4b,0x95,0xac,0x0b,0xc7,0xb2,0xb8,0xd6,0x17,0xa9,
619
+ 0x27,0xeb,0xd1,0x5C,0xc3,0x9b,0x22,0x15,0x8e,0x40,0x11,0x5e,0x57,0x16,0xd0,0xb0,
620
+ 0x5d,0x79,0x31,0xbb,0xea,0x4f,0xd9,0xde,0x00,0x0a,0xd7,0xad,0x3f,0x99,0x68,0x34,
621
+ 0x66,0xf0,0x44,0x35,0x89,0x54,0x81,0xb1,0x84,0x2a,0x8b,0x6f,0xc0,0x43,0xfe,0x96,
622
+ 0x48,0x82,0x0c,0xda,0x74,0xbc,0x21,0xf1,0x67,0x2e,0xdb,0x49,0xe4,0xd5,0x71,0x59,
623
+ 0x29,0xe0,0xa1,0x30,0xdd,0x91,0x6b,0xb7,0xb6,0x69,0xc5,0x80,0xaa,0x6d,0xa3,0x2c,
624
+ 0x05,0x78,0xba,0x51,0x14,0x07,0xd4,0xec,0x7e,0xcc,0x24,0x62,0x9e,0xdc,0x8c,0xd8,
625
+ 0x1f,0x46,0xe8,0x9f,0x4e,0xa4,0x85,0x32,0xce,0xa7,0xfc,0xe1,0x97,0xae,0x2d,0x52,
626
+ 0x7d,0x0e,0x6c,0x83,0x5f,0xbf,0x18,0x7c,0x36,0x63,0x0d,0xef,0xc8,0x5b,0x55,0x12,
627
+ 0x4a,0xf2,0x70,0x38,0xf8,0xaf,0x86,0x77,0x47,0x04,0x23,0x02,0x6e,0x4c,0x58,0x03,
628
+ 0x50,0x7a,0x3d,0x28,0xf5,0xe7,0x41,0xf4,0x45,0x60,0x6a,0x08,0x88,0x7f,0x9d,0x93,
629
+ 0x4d,0xd2,0x2f,0xee,0xe6,0xcb,0xed,0xfb,0xca,0xf7,0x19,0xb5,0x42,0x8d,0xc6,0x3c])
630
+
631
+ CLEFIA_S0 = SBox([
632
+ 0x57,0x49,0xd1,0xc6,0x2f,0x33,0x74,0xfb,0x95,0x6d,0x82,0xea,0x0e,0xb0,0xa8,0x1c,
633
+ 0x28,0xd0,0x4b,0x92,0x5c,0xee,0x85,0xb1,0xc4,0x0a,0x76,0x3d,0x63,0xf9,0x17,0xaf,
634
+ 0xbf,0xa1,0x19,0x65,0xf7,0x7a,0x32,0x20,0x06,0xce,0xe4,0x83,0x9d,0x5b,0x4c,0xd8,
635
+ 0x42,0x5d,0x2e,0xe8,0xd4,0x9b,0x0f,0x13,0x3c,0x89,0x67,0xc0,0x71,0xaa,0xb6,0xf5,
636
+ 0xa4,0xbe,0xfd,0x8c,0x12,0x00,0x97,0xda,0x78,0xe1,0xcf,0x6b,0x39,0x43,0x55,0x26,
637
+ 0x30,0x98,0xcc,0xdd,0xeb,0x54,0xb3,0x8f,0x4e,0x16,0xfa,0x22,0xa5,0x77,0x09,0x61,
638
+ 0xd6,0x2a,0x53,0x37,0x45,0xc1,0x6c,0xae,0xef,0x70,0x08,0x99,0x8b,0x1d,0xf2,0xb4,
639
+ 0xe9,0xc7,0x9f,0x4a,0x31,0x25,0xfe,0x7c,0xd3,0xa2,0xbd,0x56,0x14,0x88,0x60,0x0b,
640
+ 0xcd,0xe2,0x34,0x50,0x9e,0xdc,0x11,0x05,0x2b,0xb7,0xa9,0x48,0xff,0x66,0x8a,0x73,
641
+ 0x03,0x75,0x86,0xf1,0x6a,0xa7,0x40,0xc2,0xb9,0x2c,0xdb,0x1f,0x58,0x94,0x3e,0xed,
642
+ 0xfc,0x1b,0xa0,0x04,0xb8,0x8d,0xe6,0x59,0x62,0x93,0x35,0x7e,0xca,0x21,0xdf,0x47,
643
+ 0x15,0xf3,0xba,0x7f,0xa6,0x69,0xc8,0x4d,0x87,0x3b,0x9c,0x01,0xe0,0xde,0x24,0x52,
644
+ 0x7b,0x0c,0x68,0x1e,0x80,0xb2,0x5a,0xe7,0xad,0xd5,0x23,0xf4,0x46,0x3f,0x91,0xc9,
645
+ 0x6e,0x84,0x72,0xbb,0x0d,0x18,0xd9,0x96,0xf0,0x5f,0x41,0xac,0x27,0xc5,0xe3,0x3a,
646
+ 0x81,0x6f,0x07,0xa3,0x79,0xf6,0x2d,0x38,0x1a,0x44,0x5e,0xb5,0xd2,0xec,0xcb,0x90,
647
+ 0x9a,0x36,0xe5,0x29,0xc3,0x4f,0xab,0x64,0x51,0xf8,0x10,0xd7,0xbc,0x02,0x7d,0x8e])
648
+
649
+ CLEFIA_S1 = SBox([
650
+ 0x6c,0xda,0xc3,0xe9,0x4e,0x9d,0x0a,0x3d,0xb8,0x36,0xb4,0x38,0x13,0x34,0x0c,0xd9,
651
+ 0xbf,0x74,0x94,0x8f,0xb7,0x9c,0xe5,0xdc,0x9e,0x07,0x49,0x4f,0x98,0x2c,0xb0,0x93,
652
+ 0x12,0xeb,0xcd,0xb3,0x92,0xe7,0x41,0x60,0xe3,0x21,0x27,0x3b,0xe6,0x19,0xd2,0x0e,
653
+ 0x91,0x11,0xc7,0x3f,0x2a,0x8e,0xa1,0xbc,0x2b,0xc8,0xc5,0x0f,0x5b,0xf3,0x87,0x8b,
654
+ 0xfb,0xf5,0xde,0x20,0xc6,0xa7,0x84,0xce,0xd8,0x65,0x51,0xc9,0xa4,0xef,0x43,0x53,
655
+ 0x25,0x5d,0x9b,0x31,0xe8,0x3e,0x0d,0xd7,0x80,0xff,0x69,0x8a,0xba,0x0b,0x73,0x5c,
656
+ 0x6e,0x54,0x15,0x62,0xf6,0x35,0x30,0x52,0xa3,0x16,0xd3,0x28,0x32,0xfa,0xaa,0x5e,
657
+ 0xcf,0xea,0xed,0x78,0x33,0x58,0x09,0x7b,0x63,0xc0,0xc1,0x46,0x1e,0xdf,0xa9,0x99,
658
+ 0x55,0x04,0xc4,0x86,0x39,0x77,0x82,0xec,0x40,0x18,0x90,0x97,0x59,0xdd,0x83,0x1f,
659
+ 0x9a,0x37,0x06,0x24,0x64,0x7c,0xa5,0x56,0x48,0x08,0x85,0xd0,0x61,0x26,0xca,0x6f,
660
+ 0x7e,0x6a,0xb6,0x71,0xa0,0x70,0x05,0xd1,0x45,0x8c,0x23,0x1c,0xf0,0xee,0x89,0xad,
661
+ 0x7a,0x4b,0xc2,0x2f,0xdb,0x5a,0x4d,0x76,0x67,0x17,0x2d,0xf4,0xcb,0xb1,0x4a,0xa8,
662
+ 0xb5,0x22,0x47,0x3a,0xd5,0x10,0x4c,0x72,0xcc,0x00,0xf9,0xe0,0xfd,0xe2,0xfe,0xae,
663
+ 0xf8,0x5f,0xab,0xf1,0x1b,0x42,0x81,0xd6,0xbe,0x44,0x29,0xa6,0x57,0xb9,0xaf,0xf2,
664
+ 0xd4,0x75,0x66,0xbb,0x68,0x9f,0x50,0x02,0x01,0x3c,0x7f,0x8d,0x1a,0x88,0xbd,0xac,
665
+ 0xf7,0xe4,0x79,0x96,0xa2,0xfc,0x6d,0xb2,0x6b,0x03,0xe1,0x2e,0x7d,0x14,0x95,0x1d])
666
+
667
+ Crypton_0_5 = SBox([
668
+ 0xf0,0x12,0x4c,0x7a,0x47,0x16,0x03,0x3a,0xe6,0x9d,0x44,0x77,0x53,0xca,0x3b,0x0f,
669
+ 0x9b,0x98,0x54,0x90,0x3d,0xac,0x74,0x56,0x9e,0xde,0x5c,0xf3,0x86,0x39,0x7c,0xc4,
670
+ 0x91,0xa9,0x97,0x5f,0x9c,0x0d,0x78,0xcc,0xfd,0x43,0xbf,0x02,0x4b,0x92,0x60,0x3e,
671
+ 0x7d,0x1d,0x50,0xcb,0xb8,0xb9,0x70,0x27,0xaa,0x96,0x48,0x88,0x38,0xd7,0x68,0x42,
672
+ 0xa8,0xd0,0xa6,0x2e,0x25,0xf4,0x2c,0x6e,0x0c,0xb7,0xce,0xe0,0xbe,0x0b,0x24,0x67,
673
+ 0x8c,0xec,0xc5,0x52,0xd9,0xd8,0x09,0xb4,0xcf,0x8f,0x8d,0x8b,0x59,0x23,0x51,0xe3,
674
+ 0xd3,0xb1,0x18,0xf8,0xd4,0x05,0xa2,0xdb,0x82,0x6c,0x00,0x46,0x8a,0xaf,0xda,0xbc,
675
+ 0x99,0x1a,0xad,0xb3,0x1f,0x0e,0x71,0x4f,0xc7,0x2b,0xe5,0x2a,0xe2,0x58,0x29,0x06,
676
+ 0xf6,0xfe,0xf9,0x19,0x6b,0xea,0xbb,0xc2,0xa3,0x55,0xa1,0xdf,0x6f,0x45,0x83,0x69,
677
+ 0x8e,0x7b,0x72,0x3c,0xee,0xff,0x07,0xa5,0xe8,0xf1,0x0a,0x1c,0x75,0xe1,0x2f,0x21,
678
+ 0xd2,0xb6,0x3f,0xf7,0x73,0xb2,0x5d,0x79,0x35,0x80,0x17,0x41,0x94,0x7e,0x15,0xed,
679
+ 0xb5,0xd5,0x93,0x14,0x20,0x61,0x76,0x31,0xc9,0x6a,0xab,0x34,0xa0,0xa4,0x1e,0xba,
680
+ 0xe7,0x13,0x4e,0xc6,0xd6,0x87,0x7f,0xbd,0x84,0x62,0x26,0x95,0x6d,0x4d,0x57,0x28,
681
+ 0x04,0x64,0x4a,0x11,0x01,0x40,0x65,0x08,0xb0,0xe9,0x32,0xcd,0x81,0x66,0x2d,0x5b,
682
+ 0xef,0xa7,0xfb,0xdd,0xf2,0x33,0x5a,0x63,0xc1,0xe4,0xc3,0xae,0xdc,0xfc,0x22,0x10,
683
+ 0xfa,0x9f,0xd1,0x85,0x9a,0x1b,0x5e,0x30,0xeb,0xc8,0x89,0x49,0x37,0xc0,0x36,0xf5])
684
+
685
+ Crypton_1_0_S0 = SBox([
686
+ 0x63,0xec,0x59,0xaa,0xdb,0x8e,0x66,0xc0,0x37,0x3c,0x14,0xff,0x13,0x44,0xa9,0x91,
687
+ 0x3b,0x78,0x8d,0xef,0xc2,0x2a,0xf0,0xd7,0x61,0x9e,0xa5,0xbc,0x48,0x15,0x12,0x47,
688
+ 0xed,0x42,0x1a,0x33,0x38,0xc8,0x17,0x90,0xa6,0xd5,0x5d,0x65,0x6a,0xfe,0x8f,0xa1,
689
+ 0x93,0xca,0x2f,0x0c,0x68,0x58,0xdf,0xf4,0x45,0x11,0xa0,0xa7,0x22,0x96,0xfb,0x7d,
690
+ 0x1d,0xb4,0x84,0xe0,0xbf,0x57,0xe9,0x0a,0x4e,0x83,0xcc,0x7a,0x71,0x39,0xc7,0x32,
691
+ 0x74,0x3d,0xde,0x50,0x85,0x06,0x6f,0x53,0xe8,0xad,0x82,0x19,0xe1,0xba,0x36,0xcb,
692
+ 0x0e,0x28,0xf3,0x9b,0x4a,0x62,0x94,0x1f,0xbd,0xf6,0x67,0x41,0xd8,0xd1,0x2d,0xa4,
693
+ 0x86,0xb7,0x01,0xc5,0xb0,0x75,0x02,0xf9,0x2c,0x29,0x6e,0xd2,0x5f,0x8b,0xfc,0x5a,
694
+ 0xe4,0x7f,0xdd,0x07,0x55,0xb1,0x2b,0x89,0x72,0x18,0x3a,0x4c,0xb6,0xe3,0x80,0xce,
695
+ 0x49,0xcf,0x6b,0xb9,0xf2,0x0d,0xdc,0x64,0x95,0x46,0xf7,0x10,0x9a,0x20,0xa2,0x3f,
696
+ 0xd6,0x87,0x70,0x3e,0x21,0xfd,0x4d,0x7b,0xc3,0xae,0x09,0x8a,0x04,0xb3,0x54,0xf8,
697
+ 0x30,0x00,0x56,0xd4,0xe7,0x25,0xbb,0xac,0x98,0x73,0xea,0xc9,0x9d,0x4f,0x7e,0x03,
698
+ 0xab,0x92,0xa8,0x43,0x0f,0xfa,0x24,0x5c,0x1e,0x60,0x31,0x97,0xcd,0xc6,0x79,0xf5,
699
+ 0x5e,0xe5,0x34,0x76,0x1c,0x81,0xb2,0xaf,0x0b,0x5b,0xd9,0xe2,0x27,0x6d,0xd0,0x88,
700
+ 0xc1,0x51,0xe6,0x9c,0x77,0xbe,0x99,0x23,0xda,0xeb,0x52,0x2e,0xb5,0x08,0x05,0x6c,
701
+ 0xb8,0x1b,0xa3,0x69,0x8c,0xd3,0x40,0x26,0xf1,0xc4,0x9f,0x35,0xee,0x7c,0x4b,0x16])
702
+
703
+ Crypton_1_0_S1 = SBox([
704
+ 0x8d,0xb3,0x65,0xaa,0x6f,0x3a,0x99,0x03,0xdc,0xf0,0x50,0xff,0x4c,0x11,0xa6,0x46,
705
+ 0xec,0xe1,0x36,0xbf,0x0b,0xa8,0xc3,0x5f,0x85,0x7a,0x96,0xf2,0x21,0x54,0x48,0x1d,
706
+ 0xb7,0x09,0x68,0xcc,0xe0,0x23,0x5c,0x42,0x9a,0x57,0x75,0x95,0xa9,0xfb,0x3e,0x86,
707
+ 0x4e,0x2b,0xbc,0x30,0xa1,0x61,0x7f,0xd3,0x15,0x44,0x82,0x9e,0x88,0x5a,0xef,0xf5,
708
+ 0x74,0xd2,0x12,0x83,0xfe,0x5d,0xa7,0x28,0x39,0x0e,0x33,0xe9,0xc5,0xe4,0x1f,0xc8,
709
+ 0xd1,0xf4,0x7b,0x41,0x16,0x18,0xbd,0x4d,0xa3,0xb6,0x0a,0x64,0x87,0xea,0xd8,0x2f,
710
+ 0x38,0xa0,0xcf,0x6e,0x29,0x89,0x52,0x7c,0xf6,0xdb,0x9d,0x05,0x63,0x47,0xb4,0x92,
711
+ 0x1a,0xde,0x04,0x17,0xc2,0xd5,0x08,0xe7,0xb0,0xa4,0xb9,0x4b,0x7d,0x2e,0xf3,0x69,
712
+ 0x93,0xfd,0x77,0x1c,0x55,0xc6,0xac,0x26,0xc9,0x60,0xe8,0x31,0xda,0x8f,0x02,0x3b,
713
+ 0x25,0x3f,0xad,0xe6,0xcb,0x34,0x73,0x91,0x56,0x19,0xdf,0x40,0x6a,0x80,0x8a,0xfc,
714
+ 0x5b,0x1e,0xc1,0xf8,0x84,0xf7,0x35,0xed,0x0f,0xba,0x24,0x2a,0x10,0xce,0x51,0xe3,
715
+ 0xc0,0x00,0x59,0x53,0x9f,0x94,0xee,0xb2,0x62,0xcd,0xab,0x27,0x76,0x3d,0xf9,0x0c,
716
+ 0xae,0x4a,0xa2,0x0d,0x3c,0xeb,0x90,0x71,0x78,0x81,0xc4,0x5e,0x37,0x1b,0xe5,0xd7,
717
+ 0x79,0x97,0xd0,0xd9,0x70,0x06,0xca,0xbe,0x2c,0x6d,0x67,0x8b,0x9c,0xb5,0x43,0x22,
718
+ 0x07,0x45,0x9b,0x72,0xdd,0xfa,0x66,0x8c,0x6b,0xaf,0x49,0xb8,0xd6,0x20,0x14,0xb1,
719
+ 0xe2,0x6c,0x8e,0xa5,0x32,0x4f,0x01,0x98,0xc7,0x13,0x7e,0xd4,0xbb,0xf1,0x2d,0x58])
720
+
721
+ Crypton_1_0_S2 = SBox([
722
+ 0xb1,0x72,0x76,0xbf,0xac,0xee,0x55,0x83,0xed,0xaa,0x47,0xd8,0x33,0x95,0x60,0xc4,
723
+ 0x9b,0x39,0x1e,0x0c,0x0a,0x1d,0xff,0x26,0x89,0x5b,0x22,0xf1,0xd4,0x40,0xc8,0x67,
724
+ 0x9d,0xa4,0x3c,0xe7,0xc6,0xb5,0xf7,0xdc,0x61,0x79,0x15,0x86,0x78,0x6e,0xeb,0x32,
725
+ 0xb0,0xca,0x4f,0x23,0xd2,0xfb,0x5e,0x08,0x24,0x4d,0x8a,0x10,0x09,0x51,0xa3,0x9f,
726
+ 0xf6,0x6b,0x21,0xc3,0x0d,0x38,0x99,0x1f,0x1c,0x90,0x64,0xfe,0x8b,0xa6,0x48,0xbd,
727
+ 0x53,0xe1,0xea,0x57,0xae,0x84,0xb2,0x45,0x35,0x02,0x7f,0xd9,0xc7,0x2a,0xd0,0x7c,
728
+ 0xc9,0x18,0x65,0x00,0x97,0x2b,0x06,0x6a,0x34,0xf3,0x2c,0x92,0xef,0xdd,0x7a,0x56,
729
+ 0xa2,0x4c,0x88,0xb9,0x50,0x75,0xd3,0xe4,0x11,0xce,0x4b,0xa7,0xfd,0x3f,0xbe,0x81,
730
+ 0x8e,0xd5,0x5a,0x49,0x42,0x54,0x70,0xa1,0xdf,0x87,0xab,0x7d,0xf4,0x12,0x05,0x2e,
731
+ 0x27,0x0f,0xc1,0x30,0x66,0x98,0x3d,0xcb,0xb8,0xe6,0x9c,0x63,0xe3,0xbc,0x19,0xfa,
732
+ 0x3a,0x2f,0x9e,0xf2,0x6f,0x1a,0x28,0x3b,0xc2,0x0e,0x03,0xc0,0xb7,0x59,0xa9,0xd7,
733
+ 0x74,0x85,0xd6,0xad,0x41,0xec,0x8c,0x71,0xf0,0x93,0x5d,0xb6,0x1b,0x68,0xe5,0x44,
734
+ 0x07,0xe0,0x14,0xa8,0xf9,0x73,0xcd,0x4e,0x25,0xbb,0x31,0x5f,0x4a,0xcc,0x8f,0x91,
735
+ 0xde,0x6d,0x7b,0xf5,0xb3,0x29,0xa0,0x17,0x6c,0xda,0xe8,0x04,0x96,0x82,0x52,0x36,
736
+ 0x43,0x5c,0xdb,0x8d,0x80,0xd1,0xe2,0xb4,0x58,0x46,0xba,0xe9,0x01,0x20,0xfc,0x13,
737
+ 0x16,0xf8,0x94,0x62,0x37,0xcf,0x69,0x9a,0xaf,0x77,0xc5,0x3e,0x7e,0xa5,0x2d,0x0b])
738
+
739
+ Crypton_1_0_S3 = SBox([
740
+ 0xb1,0xf6,0x8e,0x07,0x72,0x6b,0xd5,0xe0,0x76,0x21,0x5a,0x14,0xbf,0xc3,0x49,0xa8,
741
+ 0xac,0x0d,0x42,0xf9,0xee,0x38,0x54,0x73,0x55,0x99,0x70,0xcd,0x83,0x1f,0xa1,0x4e,
742
+ 0xed,0x1c,0xdf,0x25,0xaa,0x90,0x87,0xbb,0x47,0x64,0xab,0x31,0xd8,0xfe,0x7d,0x5f,
743
+ 0x33,0x8b,0xf4,0x4a,0x95,0xa6,0x12,0xcc,0x60,0x48,0x05,0x8f,0xc4,0xbd,0x2e,0x91,
744
+ 0x9b,0x53,0x27,0xde,0x39,0xe1,0x0f,0x6d,0x1e,0xea,0xc1,0x7b,0x0c,0x57,0x30,0xf5,
745
+ 0x0a,0xae,0x66,0xb3,0x1d,0x84,0x98,0x29,0xff,0xb2,0x3d,0xa0,0x26,0x45,0xcb,0x17,
746
+ 0x89,0x35,0xb8,0x6c,0x5b,0x02,0xe6,0xda,0x22,0x7f,0x9c,0xe8,0xf1,0xd9,0x63,0x04,
747
+ 0xd4,0xc7,0xe3,0x96,0x40,0x2a,0xbc,0x82,0xc8,0xd0,0x19,0x52,0x67,0x7c,0xfa,0x36,
748
+ 0x9d,0xc9,0x3a,0x43,0xa4,0x18,0x2f,0x5c,0x3c,0x65,0x9e,0xdb,0xe7,0x00,0xf2,0x8d,
749
+ 0xc6,0x97,0x6f,0x80,0xb5,0x2b,0x1a,0xd1,0xf7,0x06,0x28,0xe2,0xdc,0x6a,0x3b,0xb4,
750
+ 0x61,0x34,0xc2,0x58,0x79,0xf3,0x0e,0x46,0x15,0x2c,0x03,0xba,0x86,0x92,0xc0,0xe9,
751
+ 0x78,0xef,0xb7,0x01,0x6e,0xdd,0x59,0x20,0xeb,0x7a,0xa9,0xfc,0x32,0x56,0xd7,0x13,
752
+ 0xb0,0xa2,0x74,0x16,0xca,0x4c,0x85,0xf8,0x4f,0x88,0xd6,0x94,0x23,0xb9,0xad,0x62,
753
+ 0xd2,0x50,0x41,0x37,0xfb,0x75,0xec,0xcf,0x5e,0xd3,0x8c,0x69,0x08,0xe4,0x71,0x9a,
754
+ 0x24,0x11,0xf0,0xaf,0x4d,0xce,0x93,0x77,0x8a,0x4b,0x5d,0xc5,0x10,0xa7,0xb6,0x3e,
755
+ 0x09,0xfd,0x1b,0x7e,0x51,0x3f,0x68,0xa5,0xa3,0xbe,0xe5,0x2d,0x9f,0x81,0x44,0x0b])
756
+
757
+ CS_cipher = SBox([
758
+ 0x29,0xd,0x61,0x40,0x9c,0xeb,0x9e,0x8f,0x1f,0x85,0x5f,0x58,0x5b,0x1,0x39,0x86,
759
+ 0x97,0x2e,0xd7,0xd6,0x35,0xae,0x17,0x16,0x21,0xb6,0x69,0x4e,0xa5,0x72,0x87,0x8,
760
+ 0x3c,0x18,0xe6,0xe7,0xfa,0xad,0xb8,0x89,0xb7,0x0,0xf7,0x6f,0x73,0x84,0x11,0x63,
761
+ 0x3f,0x96,0x7f,0x6e,0xbf,0x14,0x9d,0xac,0xa4,0xe,0x7e,0xf6,0x20,0x4a,0x62,0x30,
762
+ 0x3,0xc5,0x4b,0x5a,0x46,0xa3,0x44,0x65,0x7d,0x4d,0x3d,0x42,0x79,0x49,0x1b,0x5c,
763
+ 0xf5,0x6c,0xb5,0x94,0x54,0xff,0x56,0x57,0xb,0xf4,0x43,0xc,0x4f,0x70,0x6d,0xa,
764
+ 0xe4,0x2,0x3e,0x2f,0xa2,0x47,0xe0,0xc1,0xd5,0x1a,0x95,0xa7,0x51,0x5e,0x33,0x2b,
765
+ 0x5d,0xd4,0x1d,0x2c,0xee,0x75,0xec,0xdd,0x7c,0x4c,0xa6,0xb4,0x78,0x48,0x3a,0x32,
766
+ 0x98,0xaf,0xc0,0xe1,0x2d,0x9,0xf,0x1e,0xb9,0x27,0x8a,0xe9,0xbd,0xe3,0x9f,0x7,
767
+ 0xb1,0xea,0x92,0x93,0x53,0x6a,0x31,0x10,0x80,0xf2,0xd8,0x9b,0x4,0x36,0x6,0x8e,
768
+ 0xbe,0xa9,0x64,0x45,0x38,0x1c,0x7a,0x6b,0xf3,0xa1,0xf0,0xcd,0x37,0x25,0x15,0x81,
769
+ 0xfb,0x90,0xe8,0xd9,0x7b,0x52,0x19,0x28,0x26,0x88,0xfc,0xd1,0xe2,0x8c,0xa0,0x34,
770
+ 0x82,0x67,0xda,0xcb,0xc7,0x41,0xe5,0xc4,0xc8,0xef,0xdb,0xc3,0xcc,0xab,0xce,0xed,
771
+ 0xd0,0xbb,0xd3,0xd2,0x71,0x68,0x13,0x12,0x9a,0xb3,0xc2,0xca,0xde,0x77,0xdc,0xdf,
772
+ 0x66,0x83,0xbc,0x8d,0x60,0xc6,0x22,0x23,0xb2,0x8b,0x91,0x5,0x76,0xcf,0x74,0xc9,
773
+ 0xaa,0xf1,0x99,0xa8,0x59,0x50,0x3b,0x2a,0xfe,0xf9,0x24,0xb0,0xba,0xfd,0xf8,0x55])
774
+
775
+
776
+ CSA = SBox([
777
+ 0x3a,0xea,0x68,0xfe,0x33,0xe9,0x88,0x1a,0x83,0xcf,0xe1,0x7f,0xba,0xe2,0x38,0x12,
778
+ 0xe8,0x27,0x61,0x95,0x0c,0x36,0xe5,0x70,0xa2,0x06,0x82,0x7c,0x17,0xa3,0x26,0x49,
779
+ 0xbe,0x7a,0x6d,0x47,0xc1,0x51,0x8f,0xf3,0xcc,0x5b,0x67,0xbd,0xcd,0x18,0x08,0xc9,
780
+ 0xff,0x69,0xef,0x03,0x4e,0x48,0x4a,0x84,0x3f,0xb4,0x10,0x04,0xdc,0xf5,0x5c,0xc6,
781
+ 0x16,0xab,0xac,0x4c,0xf1,0x6a,0x2f,0x3c,0x3b,0xd4,0xd5,0x94,0xd0,0xc4,0x63,0x62,
782
+ 0x71,0xa1,0xf9,0x4f,0x2e,0xaa,0xc5,0x56,0xe3,0x39,0x93,0xce,0x65,0x64,0xe4,0x58,
783
+ 0x6c,0x19,0x42,0x79,0xdd,0xee,0x96,0xf6,0x8a,0xec,0x1e,0x85,0x53,0x45,0xde,0xbb,
784
+ 0x7e,0x0a,0x9a,0x13,0x2a,0x9d,0xc2,0x5e,0x5a,0x1f,0x32,0x35,0x9c,0xa8,0x73,0x30,
785
+ 0x29,0x3d,0xe7,0x92,0x87,0x1b,0x2b,0x4b,0xa5,0x57,0x97,0x40,0x15,0xe6,0xbc,0x0e,
786
+ 0xeb,0xc3,0x34,0x2d,0xb8,0x44,0x25,0xa4,0x1c,0xc7,0x23,0xed,0x90,0x6e,0x50,0x00,
787
+ 0x99,0x9e,0x4d,0xd9,0xda,0x8d,0x6f,0x5f,0x3e,0xd7,0x21,0x74,0x86,0xdf,0x6b,0x05,
788
+ 0x8e,0x5d,0x37,0x11,0xd2,0x28,0x75,0xd6,0xa7,0x77,0x24,0xbf,0xf0,0xb0,0x02,0xb7,
789
+ 0xf8,0xfc,0x81,0x09,0xb1,0x01,0x76,0x91,0x7d,0x0f,0xc8,0xa0,0xf2,0xcb,0x78,0x60,
790
+ 0xd1,0xf7,0xe0,0xb5,0x98,0x22,0xb3,0x20,0x1d,0xa6,0xdb,0x7b,0x59,0x9f,0xae,0x31,
791
+ 0xfb,0xd3,0xb6,0xca,0x43,0x72,0x07,0xf4,0xd8,0x41,0x14,0x55,0x0d,0x54,0x8b,0xb9,
792
+ 0xad,0x46,0x0b,0xaf,0x80,0x52,0x2c,0xfa,0x8c,0x89,0x66,0xfd,0xb2,0xa9,0x9b,0xc0])
793
+
794
+ # source: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=3672D97255B2446765DA47DA97960CDF?doi=10.1.1.118.6103&rep=rep1&type=pdf
795
+ CSS = SBox([
796
+ 0x33,0x73,0x3b,0x26,0x63,0x23,0x6b,0x76,0x3e,0x7e,0x36,0x2b,0x6e,0x2e,0x66,0x7b,
797
+ 0xd3,0x93,0xdb,0x06,0x43,0x03,0x4b,0x96,0xde,0x9e,0xd6,0x0b,0x4e,0x0e,0x46,0x9b,
798
+ 0x57,0x17,0x5f,0x82,0xc7,0x87,0xcf,0x12,0x5a,0x1a,0x52,0x8f,0xca,0x8a,0xc2,0x1f,
799
+ 0xd9,0x99,0xd1,0x00,0x49,0x09,0x41,0x90,0xd8,0x98,0xd0,0x01,0x48,0x08,0x40,0x91,
800
+ 0x3d,0x7d,0x35,0x24,0x6d,0x2d,0x65,0x74,0x3c,0x7c,0x34,0x25,0x6c,0x2c,0x64,0x75,
801
+ 0xdd,0x9d,0xd5,0x04,0x4d,0x0d,0x45,0x94,0xdc,0x9c,0xd4,0x05,0x4c,0x0c,0x44,0x95,
802
+ 0x59,0x19,0x51,0x80,0xc9,0x89,0xc1,0x10,0x58,0x18,0x50,0x81,0xc8,0x88,0xc0,0x11,
803
+ 0xd7,0x97,0xdf,0x02,0x47,0x07,0x4f,0x92,0xda,0x9a,0xd2,0x0f,0x4a,0x0a,0x42,0x9f,
804
+ 0x53,0x13,0x5b,0x86,0xc3,0x83,0xcb,0x16,0x5e,0x1e,0x56,0x8b,0xce,0x8e,0xc6,0x1b,
805
+ 0xb3,0xf3,0xbb,0xa6,0xe3,0xa3,0xeb,0xf6,0xbe,0xfe,0xb6,0xab,0xee,0xae,0xe6,0xfb,
806
+ 0x37,0x77,0x3f,0x22,0x67,0x27,0x6f,0x72,0x3a,0x7a,0x32,0x2f,0x6a,0x2a,0x62,0x7f,
807
+ 0xb9,0xf9,0xb1,0xa0,0xe9,0xa9,0xe1,0xf0,0xb8,0xf8,0xb0,0xa1,0xe8,0xa8,0xe0,0xf1,
808
+ 0x5d,0x1d,0x55,0x84,0xcd,0x8d,0xc5,0x14,0x5c,0x1c,0x54,0x85,0xcc,0x8c,0xc4,0x15,
809
+ 0xbd,0xfd,0xb5,0xa4,0xed,0xad,0xe5,0xf4,0xbc,0xfc,0xb4,0xa5,0xec,0xac,0xe4,0xf5,
810
+ 0x39,0x79,0x31,0x20,0x69,0x29,0x61,0x70,0x38,0x78,0x30,0x21,0x68,0x28,0x60,0x71,
811
+ 0xb7,0xf7,0xbf,0xa2,0xe7,0xa7,0xef,0xf2,0xba,0xfa,0xb2,0xaf,0xea,0xaa,0xe2,0xff])
812
+
813
+ DBlock = SBox([
814
+ 0x51,0x36,0x93,0x53,0xd9,0x4a,0xfc,0x58,0xe4,0x2e,0x0d,0x14,0xda,0x9d,0x91,0x69,
815
+ 0xef,0x72,0x03,0xc6,0x15,0x8d,0x5c,0x62,0x3f,0xb9,0x45,0x70,0x13,0xa3,0x95,0x6f,
816
+ 0x84,0xdb,0xb8,0x89,0x8a,0x6e,0xd4,0x7b,0x40,0xdc,0x9b,0x0c,0x50,0x8e,0xee,0x6a,
817
+ 0x88,0x3b,0x0f,0x6b,0x85,0xd3,0x54,0xa8,0x20,0xdf,0xb5,0x1b,0x32,0x7c,0x56,0x64,
818
+ 0x74,0xfa,0xc7,0x2d,0x96,0x17,0xae,0xcd,0xb4,0xf5,0x57,0x8c,0xf1,0xbc,0xd8,0xfe,
819
+ 0x27,0x06,0xe1,0xa9,0x1a,0x0e,0x5b,0x08,0xf4,0x9f,0x4b,0xed,0x73,0xb7,0xac,0x76,
820
+ 0x23,0xca,0x16,0xba,0xa7,0x00,0x8b,0x46,0x41,0xd5,0x7e,0xf2,0x05,0xf6,0x63,0x67,
821
+ 0x61,0x8f,0x3d,0xc8,0x1c,0x5a,0xb0,0x79,0x38,0x81,0xaa,0x33,0x97,0xe6,0x2c,0x01,
822
+ 0x22,0x87,0x4f,0xbe,0x24,0x71,0x35,0x9c,0xb1,0xad,0xc5,0x1d,0x80,0x3e,0x75,0xb3,
823
+ 0x28,0x68,0x2a,0xa0,0xbf,0x2f,0xb2,0xc4,0xce,0x19,0xd7,0xcf,0xaf,0x02,0xa4,0xa5,
824
+ 0x7a,0x39,0xd2,0x04,0xab,0xf7,0x60,0x2b,0x4c,0xec,0x4d,0x10,0x90,0x12,0xfb,0x78,
825
+ 0x82,0x4e,0x37,0x47,0xd6,0xa2,0xd1,0x86,0xb6,0xc1,0xe9,0xdd,0xa1,0xf8,0x55,0xde,
826
+ 0x98,0x7d,0xe5,0x30,0xfd,0xe2,0xcc,0x3a,0xea,0xd0,0x0a,0x29,0xe8,0xe3,0xeb,0xf0,
827
+ 0x9a,0x5d,0x3c,0x21,0xc0,0x48,0x6d,0x1e,0xe7,0x1f,0xc9,0x44,0x34,0x18,0x83,0xf9,
828
+ 0x59,0x5f,0x42,0x92,0x6c,0x11,0xa6,0x52,0xff,0x9e,0x49,0x26,0x07,0x43,0xbd,0xc3,
829
+ 0x99,0xf3,0x77,0x0b,0x5e,0xcb,0x09,0x31,0xe0,0xc2,0x65,0x7f,0x25,0x94,0xbb,0x66])
830
+
831
+ E2 = SBox([
832
+ 0xe1,0x42,0x3e,0x81,0x4e,0x17,0x9e,0xfd,0xb4,0x3f,0x2c,0xda,0x31,0x1e,0xe0,0x41,
833
+ 0xcc,0xf3,0x82,0x7d,0x7c,0x12,0x8e,0xbb,0xe4,0x58,0x15,0xd5,0x6f,0xe9,0x4c,0x4b,
834
+ 0x35,0x7b,0x5a,0x9a,0x90,0x45,0xbc,0xf8,0x79,0xd6,0x1b,0x88,0x02,0xab,0xcf,0x64,
835
+ 0x09,0x0c,0xf0,0x01,0xa4,0xb0,0xf6,0x93,0x43,0x63,0x86,0xdc,0x11,0xa5,0x83,0x8b,
836
+ 0xc9,0xd0,0x19,0x95,0x6a,0xa1,0x5c,0x24,0x6e,0x50,0x21,0x80,0x2f,0xe7,0x53,0x0f,
837
+ 0x91,0x22,0x04,0xed,0xa6,0x48,0x49,0x67,0xec,0xf7,0xc0,0x39,0xce,0xf2,0x2d,0xbe,
838
+ 0x5d,0x1c,0xe3,0x87,0x07,0x0d,0x7a,0xf4,0xfb,0x32,0xf5,0x8c,0xdb,0x8f,0x25,0x96,
839
+ 0xa8,0xea,0xcd,0x33,0x65,0x54,0x06,0x8d,0x89,0x0a,0x5e,0xd9,0x16,0x0e,0x71,0x6c,
840
+ 0x0b,0xff,0x60,0xd2,0x2e,0xd3,0xc8,0x55,0xc2,0x23,0xb7,0x74,0xe2,0x9b,0xdf,0x77,
841
+ 0x2b,0xb9,0x3c,0x62,0x13,0xe5,0x94,0x34,0xb1,0x27,0x84,0x9f,0xd7,0x51,0x00,0x61,
842
+ 0xad,0x85,0x73,0x03,0x08,0x40,0xef,0x68,0xfe,0x97,0x1f,0xde,0xaf,0x66,0xe8,0xb8,
843
+ 0xae,0xbd,0xb3,0xeb,0xc6,0x6b,0x47,0xa9,0xd8,0xa7,0x72,0xee,0x1d,0x7e,0xaa,0xb6,
844
+ 0x75,0xcb,0xd4,0x30,0x69,0x20,0x7f,0x37,0x5b,0x9d,0x78,0xa3,0xf1,0x76,0xfa,0x05,
845
+ 0x3d,0x3a,0x44,0x57,0x3b,0xca,0xc7,0x8a,0x18,0x46,0x9c,0xbf,0xba,0x38,0x56,0x1a,
846
+ 0x92,0x4d,0x26,0x29,0xa2,0x98,0x10,0x99,0x70,0xa0,0xc5,0x28,0xc1,0x6d,0x14,0xac,
847
+ 0xf9,0x5f,0x4f,0xc4,0xc3,0xd1,0xfc,0xdd,0xb2,0x59,0xe6,0xb5,0x36,0x52,0x4a,0x2a])
848
+
849
+ Enocoro = SBox([
850
+ 99,82,26,223,138,246,174,85,137,231,208,45,189,1,36,120,
851
+ 27,217,227,84,200,164,236,126,171,0,156,46,145,103,55,83,
852
+ 78,107,108,17,178,192,130,253,57,69,254,155,52,215,167,8,
853
+ 184,154,51,198,76,29,105,161,110,62,197,10,87,244,241,131,
854
+ 245,71,31,122,165,41,60,66,214,115,141,240,142,24,170,193,
855
+ 32,191,230,147,81,14,247,152,221,186,106,5,72,35,109,212,
856
+ 30,96,117,67,151,42,49,219,132,25,175,188,204,243,232,70,
857
+ 136,172,139,228,123,213,88,54,2,177,7,114,225,220,95,47,
858
+ 93,229,209,12,38,153,181,111,224,74,59,222,162,104,146,23,
859
+ 202,238,169,182,3,94,211,37,251,157,97,89,6,144,116,44,
860
+ 39,149,160,185,124,237,4,210,80,226,73,119,203,58,15,158,
861
+ 112,22,92,239,33,179,159,13,166,201,34,148,250,75,216,101,
862
+ 133,61,150,40,20,91,102,234,127,206,249,64,19,173,195,176,
863
+ 242,194,56,128,207,113,11,135,77,53,86,233,100,190,28,187,
864
+ 183,48,196,43,255,98,65,168,21,140,18,199,121,143,90,252,
865
+ 205,9,79,125,248,134,218,16,50,118,180,163,63,68,129,235])
866
+
867
+ Fantomas = SBox([
868
+ 0x1e,0x75,0x5f,0xe1,0x99,0xfc,0x89,0x2f,0x86,0xee,0xf1,0x7b,0x23,0x52,0x10,0x94,
869
+ 0x0c,0xb7,0x4d,0x67,0xd8,0x42,0xc8,0xd6,0xc4,0x6b,0xaa,0xba,0x3d,0xa5,0x00,0x33,
870
+ 0x53,0x2d,0x0b,0xb8,0xda,0xa8,0xc5,0x6c,0xca,0xb6,0xa4,0x22,0x60,0x07,0x5d,0xd7,
871
+ 0x4f,0xf4,0x15,0x32,0x81,0x1b,0x9c,0x8e,0x91,0x3f,0xe6,0xf9,0x70,0xe9,0x43,0x7e,
872
+ 0x8d,0xf3,0xcc,0x65,0x08,0x7a,0x18,0xab,0x16,0x6a,0x77,0xfd,0xa7,0xc0,0x82,0x04,
873
+ 0x9f,0x31,0xde,0xe3,0x49,0xd0,0x59,0x46,0x54,0xef,0x2e,0x3c,0xbb,0x21,0x92,0xb5,
874
+ 0x55,0x3e,0x0f,0xa9,0xdc,0xb9,0xc1,0x7f,0xce,0xa6,0xb4,0x30,0x72,0x03,0x5b,0xd1,
875
+ 0x4b,0xe4,0x13,0x20,0x85,0x1d,0x9a,0x8a,0x97,0x2c,0xf6,0xe8,0x62,0xf8,0x47,0x6d,
876
+ 0x29,0x41,0x68,0xd5,0xac,0xcb,0xbe,0x1a,0xb0,0xdb,0xc7,0x4e,0x17,0x64,0x26,0xa0,
877
+ 0x39,0x83,0x78,0x51,0xed,0x76,0xff,0xe2,0xf2,0x5c,0x9d,0x8f,0x0a,0x93,0x34,0x05,
878
+ 0x25,0x58,0x7c,0xcd,0xaf,0xdf,0xb3,0x19,0xbd,0xc2,0xd2,0x56,0x14,0x71,0x2a,0xa3,
879
+ 0x3a,0x80,0x61,0x44,0xf5,0x6e,0xeb,0xfb,0xe7,0x48,0x90,0x8c,0x06,0x9e,0x37,0x09,
880
+ 0x98,0xe5,0xd9,0x73,0x1f,0x6f,0x0d,0xbc,0x02,0x7d,0x63,0xea,0xb1,0xd4,0x96,0x12,
881
+ 0x88,0x27,0xc9,0xf7,0x5e,0xc6,0x4c,0x50,0x40,0xfa,0x3b,0x2b,0xae,0x35,0x84,0xa1,
882
+ 0x01,0x69,0x5a,0xfe,0x8b,0xec,0x95,0x28,0x9b,0xf0,0xe0,0x66,0x24,0x57,0x0e,0x87,
883
+ 0x1c,0xb2,0x45,0x74,0xd3,0x4a,0xcf,0xdd,0xc3,0x79,0xa2,0xbf,0x36,0xad,0x11,0x38])
884
+
885
+
886
+ FLY = SBox([
887
+ 0x00,0x9b,0xc2,0x15,0x5d,0x84,0x4c,0xd1,0x67,0x38,0xef,0xb0,0x7e,0x2b,0xf6,0xa3,
888
+ 0xb9,0xaa,0x36,0x78,0x2f,0x6e,0xe3,0xf7,0x12,0x5c,0x9a,0xd4,0x89,0xcd,0x01,0x45,
889
+ 0x2c,0x63,0x44,0xde,0x02,0x96,0x39,0x70,0xba,0xe4,0x18,0x57,0xa1,0xf5,0x8b,0xce,
890
+ 0x51,0x87,0xed,0xff,0xb5,0xa8,0xca,0x1b,0xdf,0x90,0x6c,0x32,0x46,0x03,0x7d,0x29,
891
+ 0xd5,0xf2,0x20,0x5b,0xcc,0x31,0x04,0xbd,0xa6,0x41,0x8e,0x79,0xea,0x9f,0x68,0x1c,
892
+ 0x48,0xe6,0x69,0x8a,0x13,0x77,0x9e,0xaf,0xf3,0x05,0xcb,0x2d,0xb4,0xd0,0x37,0x52,
893
+ 0xc4,0x3e,0x93,0xac,0x40,0xe9,0x22,0x56,0x7b,0x8d,0xf1,0x06,0x17,0x62,0xbf,0xda,
894
+ 0x1d,0x7f,0x07,0xb1,0xdb,0xfa,0x65,0x88,0x2e,0xc9,0xa5,0x43,0x58,0x3c,0xe0,0x94,
895
+ 0x76,0x21,0xab,0xfd,0x6a,0x3f,0xb7,0xe2,0xdd,0x4f,0x53,0x8c,0xc0,0x19,0x95,0x08,
896
+ 0x83,0xc5,0x4e,0x09,0x14,0x50,0xd8,0x9c,0xf4,0xee,0x27,0x61,0x3b,0x7a,0xa2,0xb6,
897
+ 0xfe,0xa9,0x81,0xc6,0xe8,0xbc,0x1f,0x5a,0x35,0x72,0x99,0x0a,0xd3,0x47,0x24,0x6d,
898
+ 0x0b,0x4d,0x75,0x23,0x97,0xd2,0x60,0x34,0xc8,0x16,0xa0,0xbb,0xfc,0xe1,0x5e,0x8f,
899
+ 0xe7,0x98,0x1a,0x64,0xae,0x4b,0x71,0x85,0x0c,0xb3,0x3d,0xcf,0x55,0x28,0xd9,0xf0,
900
+ 0xb2,0xdc,0x5f,0x30,0xf9,0x0d,0x26,0xc3,0x91,0xa7,0x74,0x1e,0x82,0x66,0x4a,0xeb,
901
+ 0x6f,0x10,0xb8,0xd7,0x86,0x73,0xfb,0x0e,0x59,0x2a,0x42,0xe5,0x9d,0xa4,0x33,0xc7,
902
+ 0x3a,0x54,0xec,0x92,0xc1,0x25,0xad,0x49,0x80,0x6b,0xd6,0xf8,0x0f,0xbe,0x7c,0x11])
903
+
904
+ Fox = SBox([
905
+ 0x5D,0xDE,0x00,0xB7,0xD3,0xCA,0x3C,0x0D,0xC3,0xF8,0xCB,0x8D,0x76,0x89,0xAA,0x12,
906
+ 0x88,0x22,0x4F,0xDB,0x6D,0x47,0xE4,0x4C,0x78,0x9A,0x49,0x93,0xC4,0xC0,0x86,0x13,
907
+ 0xA9,0x20,0x53,0x1C,0x4E,0xCF,0x35,0x39,0xB4,0xA1,0x54,0x64,0x03,0xC7,0x85,0x5C,
908
+ 0x5B,0xCD,0xD8,0x72,0x96,0x42,0xB8,0xE1,0xA2,0x60,0xEF,0xBD,0x02,0xAF,0x8C,0x73,
909
+ 0x7C,0x7F,0x5E,0xF9,0x65,0xE6,0xEB,0xAD,0x5A,0xA5,0x79,0x8E,0x15,0x30,0xEC,0xA4,
910
+ 0xC2,0x3E,0xE0,0x74,0x51,0xFB,0x2D,0x6E,0x94,0x4D,0x55,0x34,0xAE,0x52,0x7E,0x9D,
911
+ 0x4A,0xF7,0x80,0xF0,0xD0,0x90,0xA7,0xE8,0x9F,0x50,0xD5,0xD1,0x98,0xCC,0xA0,0x17,
912
+ 0xF4,0xB6,0xC1,0x28,0x5F,0x26,0x01,0xAB,0x25,0x38,0x82,0x7D,0x48,0xFC,0x1B,0xCE,
913
+ 0x3F,0x6B,0xE2,0x67,0x66,0x43,0x59,0x19,0x84,0x3D,0xF5,0x2F,0xC9,0xBC,0xD9,0x95,
914
+ 0x29,0x41,0xDA,0x1A,0xB0,0xE9,0x69,0xD2,0x7B,0xD7,0x11,0x9B,0x33,0x8A,0x23,0x09,
915
+ 0xD4,0x71,0x44,0x68,0x6F,0xF2,0x0E,0xDF,0x87,0xDC,0x83,0x18,0x6A,0xEE,0x99,0x81,
916
+ 0x62,0x36,0x2E,0x7A,0xFE,0x45,0x9C,0x75,0x91,0x0C,0x0F,0xE7,0xF6,0x14,0x63,0x1D,
917
+ 0x0B,0x8B,0xB3,0xF3,0xB2,0x3B,0x08,0x4B,0x10,0xA6,0x32,0xB9,0xA8,0x92,0xF1,0x56,
918
+ 0xDD,0x21,0xBF,0x04,0xBE,0xD6,0xFD,0x77,0xEA,0x3A,0xC8,0x8F,0x57,0x1E,0xFA,0x2B,
919
+ 0x58,0xC5,0x27,0xAC,0xE3,0xED,0x97,0xBB,0x46,0x05,0x40,0x31,0xE5,0x37,0x2C,0x9E,
920
+ 0x0A,0xB1,0xB5,0x06,0x6C,0x1F,0xA3,0x2A,0x70,0xFF,0xBA,0x07,0x24,0x16,0xC6,0x61])
921
+
922
+ Iceberg = SBox([
923
+ 0x24,0xc1,0x38,0x30,0xe7,0x57,0xdf,0x20,0x3e,0x99,0x1a,0x34,0xca,0xd6,0x52,0xfd,
924
+ 0x40,0x6c,0xd3,0x3d,0x4a,0x59,0xf8,0x77,0xfb,0x61,0x0a,0x56,0xb9,0xd2,0xfc,0xf1,
925
+ 0x07,0xf5,0x93,0xcd,0x00,0xb6,0x62,0xa7,0x63,0xfe,0x44,0xbd,0x5f,0x92,0x6b,0x68,
926
+ 0x03,0x4e,0xa2,0x97,0x0b,0x60,0x83,0xa3,0x02,0xe5,0x45,0x67,0xf4,0x13,0x08,0x8b,
927
+ 0x10,0xce,0xbe,0xb4,0x2a,0x3a,0x96,0x84,0xc8,0x9f,0x14,0xc0,0xc4,0x6f,0x31,0xd9,
928
+ 0xab,0xae,0x0e,0x64,0x7c,0xda,0x1b,0x05,0xa8,0x15,0xa5,0x90,0x94,0x85,0x71,0x2c,
929
+ 0x35,0x19,0x26,0x28,0x53,0xe2,0x7f,0x3b,0x2f,0xa9,0xcc,0x2e,0x11,0x76,0xed,0x4d,
930
+ 0x87,0x5e,0xc2,0xc7,0x80,0xb0,0x6d,0x17,0xb2,0xff,0xe4,0xb7,0x54,0x9d,0xb8,0x66,
931
+ 0x74,0x9c,0xdb,0x36,0x47,0x5d,0xde,0x70,0xd5,0x91,0xaa,0x3f,0xc9,0xd8,0xf3,0xf2,
932
+ 0x5b,0x89,0x2d,0x22,0x5c,0xe1,0x46,0x33,0xe6,0x09,0xbc,0xe8,0x81,0x7d,0xe9,0x49,
933
+ 0xe0,0xb1,0x32,0x37,0xea,0x5a,0xf6,0x27,0x58,0x69,0x8a,0x50,0xba,0xdd,0x51,0xf9,
934
+ 0x75,0xa1,0x78,0xd0,0x43,0xf7,0x25,0x7b,0x7e,0x1c,0xac,0xd4,0x9a,0x2b,0x42,0xe3,
935
+ 0x4b,0x01,0x72,0xd7,0x4c,0xfa,0xeb,0x73,0x48,0x8c,0x0c,0xf0,0x6a,0x23,0x41,0xec,
936
+ 0xb3,0xef,0x1d,0x12,0xbb,0x88,0x0d,0xc3,0x8d,0x4f,0x55,0x82,0xee,0xad,0x86,0x06,
937
+ 0xa0,0x95,0x65,0xbf,0x7a,0x39,0x98,0x04,0x9b,0x9e,0xa4,0xc6,0xcf,0x6e,0xdc,0xd1,
938
+ 0xcb,0x1f,0x8f,0x8e,0x3c,0x21,0xa6,0xb5,0x16,0xaf,0xc5,0x18,0x1e,0x0f,0x29,0x79])
939
+
940
+ Iraqi = SBox([
941
+ 173,84,240,67,1,53,254,36,41,172,115,109,223,199,152,189,90,46,
942
+ 149,193,218,130,250,40,203,4,35,237,236,246,213,143,169,176,48,
943
+ 23,61,206,69,34,97,155,4,109,183,220,42,64,21,123,29,233,253,
944
+ 105,183,209,1,191,113,12,46,7,8,183,166,199,166,7,78,37,135,
945
+ 252,174,84,140,164,152,94,22,185,59,68,181,60,176,67,51,25,28,
946
+ 190,138,198,44,90,92,221,149,175,186,25,49,210,50,237,41,207,
947
+ 31,226,114,121,230,15,58,25,142,58,98,232,59,3,189,28,8,116,
948
+ 131,185,78,250,239,33,116,173,94,45,104,62,122,179,18,150,246,
949
+ 250,17,8,79,157,225,238,47,10,133,58,8,126,82,68,153,141,2,158,
950
+ 204,50,130,53,59,32,243,160,172,35,24,107,35,115,228,143,28,
951
+ 224,77,55,25,28,120,89,186,152,49,84,117,180,30,138,134,77,182,
952
+ 157,61,230,22,149,54,15,110,32,213,155,106,78,16,23,89,140,158,
953
+ 169,96,136,186,104,30,199,67,35,218,159,210,109,28,238,33,150,
954
+ 173,180,247,201,83,150,105,164,228,59,207,101,221,99,52,120,
955
+ 199,31,6,144,202,215,209,49,42,195])
956
+
957
+ iScream = SBox([
958
+ 0x00,0x85,0x65,0xD2,0x5B,0xFF,0x7A,0xCE,0x4D,0xE2,0x2C,0x36,0x92,0x15,0xBD,0xAD,
959
+ 0x57,0xF3,0x37,0x2D,0x88,0x0D,0xAC,0xBC,0x18,0x9F,0x7E,0xCA,0x41,0xEE,0x61,0xD6,
960
+ 0x59,0xEC,0x78,0xD4,0x47,0xF9,0x26,0xA3,0x90,0x8B,0xBF,0x30,0x0A,0x13,0x6F,0xC0,
961
+ 0x2B,0xAE,0x91,0x8A,0xD8,0x74,0x0B,0x12,0xCC,0x63,0xFD,0x43,0xB2,0x3D,0xE8,0x5D,
962
+ 0xB6,0x1C,0x83,0x3B,0xC8,0x45,0x9D,0x24,0x52,0xDD,0xE4,0xF4,0xAB,0x08,0x77,0x6D,
963
+ 0xF5,0xE5,0x48,0xC5,0x6C,0x76,0xBA,0x10,0x99,0x20,0xA7,0x04,0x87,0x3F,0xD0,0x5F,
964
+ 0xA5,0x1E,0x9B,0x39,0xB0,0x02,0xEA,0x67,0xC6,0xDF,0x71,0xF6,0x54,0x4F,0x8D,0x2E,
965
+ 0xE7,0x6A,0xC7,0xDE,0x35,0x97,0x55,0x4E,0x22,0x81,0x06,0xB4,0x7C,0xFB,0x1A,0xA1,
966
+ 0xD5,0x79,0xFC,0x42,0x84,0x01,0xE9,0x5C,0x14,0x93,0x33,0x29,0xC1,0x6E,0xA8,0xB8,
967
+ 0x28,0x32,0x0C,0x89,0xB9,0xA9,0xD9,0x75,0xED,0x58,0xCD,0x62,0xF8,0x46,0x9E,0x19,
968
+ 0xCB,0x7F,0xA2,0x27,0xD7,0x60,0xFE,0x5A,0x8E,0x95,0xE3,0x4C,0x16,0x0F,0x31,0xBE,
969
+ 0x64,0xD3,0x3C,0xB3,0x7B,0xCF,0x40,0xEF,0x8F,0x94,0x56,0xF2,0x17,0x0E,0xAF,0x2A,
970
+ 0x2F,0x8C,0xF1,0xE1,0xDC,0x53,0x68,0x72,0x44,0xC9,0x1B,0xA0,0x38,0x9A,0x07,0xB5,
971
+ 0x5E,0xD1,0x03,0xB1,0x23,0x80,0x1F,0xA4,0x34,0x96,0xE0,0xF0,0xC4,0x49,0x73,0x69,
972
+ 0xDA,0xC3,0x09,0xAA,0x4A,0x51,0xF7,0x70,0x3E,0x86,0x66,0xEB,0x21,0x98,0x1D,0xB7,
973
+ 0xDB,0xC2,0xBB,0x11,0x4B,0x50,0x6B,0xE6,0x9C,0x25,0xFA,0x7D,0x82,0x3A,0xA6,0x05])
974
+
975
+ Kalyna_pi0 = SBox([
976
+ 0xa8,0x43,0x5f,0x6,0x6b,0x75,0x6c,0x59,0x71,0xdf,0x87,0x95,0x17,0xf0,0xd8,0x9,
977
+ 0x6d,0xf3,0x1d,0xcb,0xc9,0x4d,0x2c,0xaf,0x79,0xe0,0x97,0xfd,0x6f,0x4b,0x45,0x39,
978
+ 0x3e,0xdd,0xa3,0x4f,0xb4,0xb6,0x9a,0xe,0x1f,0xbf,0x15,0xe1,0x49,0xd2,0x93,0xc6,
979
+ 0x92,0x72,0x9e,0x61,0xd1,0x63,0xfa,0xee,0xf4,0x19,0xd5,0xad,0x58,0xa4,0xbb,0xa1,
980
+ 0xdc,0xf2,0x83,0x37,0x42,0xe4,0x7a,0x32,0x9c,0xcc,0xab,0x4a,0x8f,0x6e,0x4,0x27,
981
+ 0x2e,0xe7,0xe2,0x5a,0x96,0x16,0x23,0x2b,0xc2,0x65,0x66,0xf,0xbc,0xa9,0x47,0x41,
982
+ 0x34,0x48,0xfc,0xb7,0x6a,0x88,0xa5,0x53,0x86,0xf9,0x5b,0xdb,0x38,0x7b,0xc3,0x1e,
983
+ 0x22,0x33,0x24,0x28,0x36,0xc7,0xb2,0x3b,0x8e,0x77,0xba,0xf5,0x14,0x9f,0x8,0x55,
984
+ 0x9b,0x4c,0xfe,0x60,0x5c,0xda,0x18,0x46,0xcd,0x7d,0x21,0xb0,0x3f,0x1b,0x89,0xff,
985
+ 0xeb,0x84,0x69,0x3a,0x9d,0xd7,0xd3,0x70,0x67,0x40,0xb5,0xde,0x5d,0x30,0x91,0xb1,
986
+ 0x78,0x11,0x1,0xe5,0x0,0x68,0x98,0xa0,0xc5,0x2,0xa6,0x74,0x2d,0xb,0xa2,0x76,
987
+ 0xb3,0xbe,0xce,0xbd,0xae,0xe9,0x8a,0x31,0x1c,0xec,0xf1,0x99,0x94,0xaa,0xf6,0x26,
988
+ 0x2f,0xef,0xe8,0x8c,0x35,0x3,0xd4,0x7f,0xfb,0x5,0xc1,0x5e,0x90,0x20,0x3d,0x82,
989
+ 0xf7,0xea,0xa,0xd,0x7e,0xf8,0x50,0x1a,0xc4,0x7,0x57,0xb8,0x3c,0x62,0xe3,0xc8,
990
+ 0xac,0x52,0x64,0x10,0xd0,0xd9,0x13,0xc,0x12,0x29,0x51,0xb9,0xcf,0xd6,0x73,0x8d,
991
+ 0x81,0x54,0xc0,0xed,0x4e,0x44,0xa7,0x2a,0x85,0x25,0xe6,0xca,0x7c,0x8b,0x56,0x80])
992
+
993
+ Kalyna_pi1 = SBox([
994
+ 0xce,0xbb,0xeb,0x92,0xea,0xcb,0x13,0xc1,0xe9,0x3a,0xd6,0xb2,0xd2,0x90,0x17,0xf8,
995
+ 0x42,0x15,0x56,0xb4,0x65,0x1c,0x88,0x43,0xc5,0x5c,0x36,0xba,0xf5,0x57,0x67,0x8d,
996
+ 0x31,0xf6,0x64,0x58,0x9e,0xf4,0x22,0xaa,0x75,0xf,0x2,0xb1,0xdf,0x6d,0x73,0x4d,
997
+ 0x7c,0x26,0x2e,0xf7,0x8,0x5d,0x44,0x3e,0x9f,0x14,0xc8,0xae,0x54,0x10,0xd8,0xbc,
998
+ 0x1a,0x6b,0x69,0xf3,0xbd,0x33,0xab,0xfa,0xd1,0x9b,0x68,0x4e,0x16,0x95,0x91,0xee,
999
+ 0x4c,0x63,0x8e,0x5b,0xcc,0x3c,0x19,0xa1,0x81,0x49,0x7b,0xd9,0x6f,0x37,0x60,0xca,
1000
+ 0xe7,0x2b,0x48,0xfd,0x96,0x45,0xfc,0x41,0x12,0xd,0x79,0xe5,0x89,0x8c,0xe3,0x20,
1001
+ 0x30,0xdc,0xb7,0x6c,0x4a,0xb5,0x3f,0x97,0xd4,0x62,0x2d,0x6,0xa4,0xa5,0x83,0x5f,
1002
+ 0x2a,0xda,0xc9,0x0,0x7e,0xa2,0x55,0xbf,0x11,0xd5,0x9c,0xcf,0xe,0xa,0x3d,0x51,
1003
+ 0x7d,0x93,0x1b,0xfe,0xc4,0x47,0x9,0x86,0xb,0x8f,0x9d,0x6a,0x7,0xb9,0xb0,0x98,
1004
+ 0x18,0x32,0x71,0x4b,0xef,0x3b,0x70,0xa0,0xe4,0x40,0xff,0xc3,0xa9,0xe6,0x78,0xf9,
1005
+ 0x8b,0x46,0x80,0x1e,0x38,0xe1,0xb8,0xa8,0xe0,0xc,0x23,0x76,0x1d,0x25,0x24,0x5,
1006
+ 0xf1,0x6e,0x94,0x28,0x9a,0x84,0xe8,0xa3,0x4f,0x77,0xd3,0x85,0xe2,0x52,0xf2,0x82,
1007
+ 0x50,0x7a,0x2f,0x74,0x53,0xb3,0x61,0xaf,0x39,0x35,0xde,0xcd,0x1f,0x99,0xac,0xad,
1008
+ 0x72,0x2c,0xdd,0xd0,0x87,0xbe,0x5e,0xa6,0xec,0x4,0xc6,0x3,0x34,0xfb,0xdb,0x59,
1009
+ 0xb6,0xc2,0x1,0xf0,0x5a,0xed,0xa7,0x66,0x21,0x7f,0x8a,0x27,0xc7,0xc0,0x29,0xd7])
1010
+
1011
+ Kalyna_pi2 = SBox([
1012
+ 0x93,0xd9,0x9a,0xb5,0x98,0x22,0x45,0xfc,0xba,0x6a,0xdf,0x2,0x9f,0xdc,0x51,0x59,
1013
+ 0x4a,0x17,0x2b,0xc2,0x94,0xf4,0xbb,0xa3,0x62,0xe4,0x71,0xd4,0xcd,0x70,0x16,0xe1,
1014
+ 0x49,0x3c,0xc0,0xd8,0x5c,0x9b,0xad,0x85,0x53,0xa1,0x7a,0xc8,0x2d,0xe0,0xd1,0x72,
1015
+ 0xa6,0x2c,0xc4,0xe3,0x76,0x78,0xb7,0xb4,0x9,0x3b,0xe,0x41,0x4c,0xde,0xb2,0x90,
1016
+ 0x25,0xa5,0xd7,0x3,0x11,0x0,0xc3,0x2e,0x92,0xef,0x4e,0x12,0x9d,0x7d,0xcb,0x35,
1017
+ 0x10,0xd5,0x4f,0x9e,0x4d,0xa9,0x55,0xc6,0xd0,0x7b,0x18,0x97,0xd3,0x36,0xe6,0x48,
1018
+ 0x56,0x81,0x8f,0x77,0xcc,0x9c,0xb9,0xe2,0xac,0xb8,0x2f,0x15,0xa4,0x7c,0xda,0x38,
1019
+ 0x1e,0xb,0x5,0xd6,0x14,0x6e,0x6c,0x7e,0x66,0xfd,0xb1,0xe5,0x60,0xaf,0x5e,0x33,
1020
+ 0x87,0xc9,0xf0,0x5d,0x6d,0x3f,0x88,0x8d,0xc7,0xf7,0x1d,0xe9,0xec,0xed,0x80,0x29,
1021
+ 0x27,0xcf,0x99,0xa8,0x50,0xf,0x37,0x24,0x28,0x30,0x95,0xd2,0x3e,0x5b,0x40,0x83,
1022
+ 0xb3,0x69,0x57,0x1f,0x7,0x1c,0x8a,0xbc,0x20,0xeb,0xce,0x8e,0xab,0xee,0x31,0xa2,
1023
+ 0x73,0xf9,0xca,0x3a,0x1a,0xfb,0xd,0xc1,0xfe,0xfa,0xf2,0x6f,0xbd,0x96,0xdd,0x43,
1024
+ 0x52,0xb6,0x8,0xf3,0xae,0xbe,0x19,0x89,0x32,0x26,0xb0,0xea,0x4b,0x64,0x84,0x82,
1025
+ 0x6b,0xf5,0x79,0xbf,0x1,0x5f,0x75,0x63,0x1b,0x23,0x3d,0x68,0x2a,0x65,0xe8,0x91,
1026
+ 0xf6,0xff,0x13,0x58,0xf1,0x47,0xa,0x7f,0xc5,0xa7,0xe7,0x61,0x5a,0x6,0x46,0x44,
1027
+ 0x42,0x4,0xa0,0xdb,0x39,0x86,0x54,0xaa,0x8c,0x34,0x21,0x8b,0xf8,0xc,0x74,0x67])
1028
+
1029
+ Kalyna_pi3 = SBox([
1030
+ 0x68,0x8d,0xca,0x4d,0x73,0x4b,0x4e,0x2a,0xd4,0x52,0x26,0xb3,0x54,0x1e,0x19,0x1f,
1031
+ 0x22,0x3,0x46,0x3d,0x2d,0x4a,0x53,0x83,0x13,0x8a,0xb7,0xd5,0x25,0x79,0xf5,0xbd,
1032
+ 0x58,0x2f,0xd,0x2,0xed,0x51,0x9e,0x11,0xf2,0x3e,0x55,0x5e,0xd1,0x16,0x3c,0x66,
1033
+ 0x70,0x5d,0xf3,0x45,0x40,0xcc,0xe8,0x94,0x56,0x8,0xce,0x1a,0x3a,0xd2,0xe1,0xdf,
1034
+ 0xb5,0x38,0x6e,0xe,0xe5,0xf4,0xf9,0x86,0xe9,0x4f,0xd6,0x85,0x23,0xcf,0x32,0x99,
1035
+ 0x31,0x14,0xae,0xee,0xc8,0x48,0xd3,0x30,0xa1,0x92,0x41,0xb1,0x18,0xc4,0x2c,0x71,
1036
+ 0x72,0x44,0x15,0xfd,0x37,0xbe,0x5f,0xaa,0x9b,0x88,0xd8,0xab,0x89,0x9c,0xfa,0x60,
1037
+ 0xea,0xbc,0x62,0xc,0x24,0xa6,0xa8,0xec,0x67,0x20,0xdb,0x7c,0x28,0xdd,0xac,0x5b,
1038
+ 0x34,0x7e,0x10,0xf1,0x7b,0x8f,0x63,0xa0,0x5,0x9a,0x43,0x77,0x21,0xbf,0x27,0x9,
1039
+ 0xc3,0x9f,0xb6,0xd7,0x29,0xc2,0xeb,0xc0,0xa4,0x8b,0x8c,0x1d,0xfb,0xff,0xc1,0xb2,
1040
+ 0x97,0x2e,0xf8,0x65,0xf6,0x75,0x7,0x4,0x49,0x33,0xe4,0xd9,0xb9,0xd0,0x42,0xc7,
1041
+ 0x6c,0x90,0x0,0x8e,0x6f,0x50,0x1,0xc5,0xda,0x47,0x3f,0xcd,0x69,0xa2,0xe2,0x7a,
1042
+ 0xa7,0xc6,0x93,0xf,0xa,0x6,0xe6,0x2b,0x96,0xa3,0x1c,0xaf,0x6a,0x12,0x84,0x39,
1043
+ 0xe7,0xb0,0x82,0xf7,0xfe,0x9d,0x87,0x5c,0x81,0x35,0xde,0xb4,0xa5,0xfc,0x80,0xef,
1044
+ 0xcb,0xbb,0x6b,0x76,0xba,0x5a,0x7d,0x78,0xb,0x95,0xe3,0xad,0x74,0x98,0x3b,0x36,
1045
+ 0x64,0x6d,0xdc,0xf0,0x59,0xa9,0x4c,0x17,0x7f,0x91,0xb8,0xc9,0x57,0x1b,0xe0,0x61])
1046
+
1047
+ Khazad = SBox([
1048
+ 0xba,0x54,0x2f,0x74,0x53,0xd3,0xd2,0x4d,0x50,0xac,0x8d,0xbf,0x70,0x52,0x9a,0x4c,
1049
+ 0xea,0xd5,0x97,0xd1,0x33,0x51,0x5b,0xa6,0xde,0x48,0xa8,0x99,0xdb,0x32,0xb7,0xfc,
1050
+ 0xe3,0x9e,0x91,0x9b,0xe2,0xbb,0x41,0x6e,0xa5,0xcb,0x6b,0x95,0xa1,0xf3,0xb1,0x02,
1051
+ 0xcc,0xc4,0x1d,0x14,0xc3,0x63,0xda,0x5d,0x5f,0xdc,0x7d,0xcd,0x7f,0x5a,0x6c,0x5c,
1052
+ 0xf7,0x26,0xff,0xed,0xe8,0x9d,0x6f,0x8e,0x19,0xa0,0xf0,0x89,0x0f,0x07,0xaf,0xfb,
1053
+ 0x08,0x15,0x0d,0x04,0x01,0x64,0xdf,0x76,0x79,0xdd,0x3d,0x16,0x3f,0x37,0x6d,0x38,
1054
+ 0xb9,0x73,0xe9,0x35,0x55,0x71,0x7b,0x8c,0x72,0x88,0xf6,0x2a,0x3e,0x5e,0x27,0x46,
1055
+ 0x0c,0x65,0x68,0x61,0x03,0xc1,0x57,0xd6,0xd9,0x58,0xd8,0x66,0xd7,0x3a,0xc8,0x3c,
1056
+ 0xfa,0x96,0xa7,0x98,0xec,0xb8,0xc7,0xae,0x69,0x4b,0xab,0xa9,0x67,0x0a,0x47,0xf2,
1057
+ 0xb5,0x22,0xe5,0xee,0xbe,0x2b,0x81,0x12,0x83,0x1b,0x0e,0x23,0xf5,0x45,0x21,0xce,
1058
+ 0x49,0x2c,0xf9,0xe6,0xb6,0x28,0x17,0x82,0x1a,0x8b,0xfe,0x8a,0x09,0xc9,0x87,0x4e,
1059
+ 0xe1,0x2e,0xe4,0xe0,0xeb,0x90,0xa4,0x1e,0x85,0x60,0x00,0x25,0xf4,0xf1,0x94,0x0b,
1060
+ 0xe7,0x75,0xef,0x34,0x31,0xd4,0xd0,0x86,0x7e,0xad,0xfd,0x29,0x30,0x3b,0x9f,0xf8,
1061
+ 0xc6,0x13,0x06,0x05,0xc5,0x11,0x77,0x7c,0x7a,0x78,0x36,0x1c,0x39,0x59,0x18,0x56,
1062
+ 0xb3,0xb0,0x24,0x20,0xb2,0x92,0xa3,0xc0,0x44,0x62,0x10,0xb4,0x84,0x43,0x93,0xc2,
1063
+ 0x4a,0xbd,0x8f,0x2d,0xbc,0x9c,0x6a,0x40,0xcf,0xa2,0x80,0x4f,0x1f,0xca,0xaa,0x42])
1064
+
1065
+ Kuznyechik = SBox([
1066
+ 0xFC,0xEE,0xDD,0x11,0xCF,0x6E,0x31,0x16,0xFB,0xC4,0xFA,0xDA,0x23,0xC5,0x04,0x4D,
1067
+ 0xE9,0x77,0xF0,0xDB,0x93,0x2E,0x99,0xBA,0x17,0x36,0xF1,0xBB,0x14,0xCD,0x5F,0xC1,
1068
+ 0xF9,0x18,0x65,0x5A,0xE2,0x5C,0xEF,0x21,0x81,0x1C,0x3C,0x42,0x8B,0x01,0x8E,0x4F,
1069
+ 0x05,0x84,0x02,0xAE,0xE3,0x6A,0x8F,0xA0,0x06,0x0B,0xED,0x98,0x7F,0xD4,0xD3,0x1F,
1070
+ 0xEB,0x34,0x2C,0x51,0xEA,0xC8,0x48,0xAB,0xF2,0x2A,0x68,0xA2,0xFD,0x3A,0xCE,0xCC,
1071
+ 0xB5,0x70,0x0E,0x56,0x08,0x0C,0x76,0x12,0xBF,0x72,0x13,0x47,0x9C,0xB7,0x5D,0x87,
1072
+ 0x15,0xA1,0x96,0x29,0x10,0x7B,0x9A,0xC7,0xF3,0x91,0x78,0x6F,0x9D,0x9E,0xB2,0xB1,
1073
+ 0x32,0x75,0x19,0x3D,0xFF,0x35,0x8A,0x7E,0x6D,0x54,0xC6,0x80,0xC3,0xBD,0x0D,0x57,
1074
+ 0xDF,0xF5,0x24,0xA9,0x3E,0xA8,0x43,0xC9,0xD7,0x79,0xD6,0xF6,0x7C,0x22,0xB9,0x03,
1075
+ 0xE0,0x0F,0xEC,0xDE,0x7A,0x94,0xB0,0xBC,0xDC,0xE8,0x28,0x50,0x4E,0x33,0x0A,0x4A,
1076
+ 0xA7,0x97,0x60,0x73,0x1E,0x00,0x62,0x44,0x1A,0xB8,0x38,0x82,0x64,0x9F,0x26,0x41,
1077
+ 0xAD,0x45,0x46,0x92,0x27,0x5E,0x55,0x2F,0x8C,0xA3,0xA5,0x7D,0x69,0xD5,0x95,0x3B,
1078
+ 0x07,0x58,0xB3,0x40,0x86,0xAC,0x1D,0xF7,0x30,0x37,0x6B,0xE4,0x88,0xD9,0xE7,0x89,
1079
+ 0xE1,0x1B,0x83,0x49,0x4C,0x3F,0xF8,0xFE,0x8D,0x53,0xAA,0x90,0xCA,0xD8,0x85,0x61,
1080
+ 0x20,0x71,0x67,0xA4,0x2D,0x2B,0x09,0x5B,0xCB,0x9B,0x25,0xD0,0xBE,0xE5,0x6C,0x52,
1081
+ 0x59,0xA6,0x74,0xD2,0xE6,0xF4,0xB4,0xC0,0xD1,0x66,0xAF,0xC2,0x39,0x4B,0x63,0xB6])
1082
+ Kuznechik = Kuznyechik
1083
+ Streebog = Kuznyechik
1084
+ Stribog = Kuznyechik
1085
+
1086
+ Lilliput_AE = SBox([
1087
+ 0x20, 0x00, 0xB2, 0x85, 0x3B, 0x35, 0xA6, 0xA4, 0x30, 0xE4, 0x6A, 0x2C, 0xFF, 0x59, 0xE2, 0x0E,
1088
+ 0xF8, 0x1E, 0x7A, 0x80, 0x15, 0xBD, 0x3E, 0xB1, 0xE8, 0xF3, 0xA2, 0xC2, 0xDA, 0x51, 0x2A, 0x10,
1089
+ 0x21, 0x01, 0x23, 0x78, 0x5C, 0x24, 0x27, 0xB5, 0x37, 0xC7, 0x2B, 0x1F, 0xAE, 0x0A, 0x77, 0x5F,
1090
+ 0x6F, 0x09, 0x9D, 0x81, 0x04, 0x5A, 0x29, 0xDC, 0x39, 0x9C, 0x05, 0x57, 0x97, 0x74, 0x79, 0x17,
1091
+ 0x44, 0xC6, 0xE6, 0xE9, 0xDD, 0x41, 0xF2, 0x8A, 0x54, 0xCA, 0x6E, 0x4A, 0xE1, 0xAD, 0xB6, 0x88,
1092
+ 0x1C, 0x98, 0x7E, 0xCE, 0x63, 0x49, 0x3A, 0x5D, 0x0C, 0xEF, 0xF6, 0x34, 0x56, 0x25, 0x2E, 0xD6,
1093
+ 0x67, 0x75, 0x55, 0x76, 0xB8, 0xD2, 0x61, 0xD9, 0x71, 0x8B, 0xCD, 0x0B, 0x72, 0x6C, 0x31, 0x4B,
1094
+ 0x69, 0xFD, 0x7B, 0x6D, 0x60, 0x3C, 0x2F, 0x62, 0x3F, 0x22, 0x73, 0x13, 0xC9, 0x82, 0x7F, 0x53,
1095
+ 0x32, 0x12, 0xA0, 0x7C, 0x02, 0x87, 0x84, 0x86, 0x93, 0x4E, 0x68, 0x46, 0x8D, 0xC3, 0xDB, 0xEC,
1096
+ 0x9B, 0xB7, 0x89, 0x92, 0xA7, 0xBE, 0x3D, 0xD8, 0xEA, 0x50, 0x91, 0xF1, 0x33, 0x38, 0xE0, 0xA9,
1097
+ 0xA3, 0x83, 0xA1, 0x1B, 0xCF, 0x06, 0x95, 0x07, 0x9E, 0xED, 0xB9, 0xF5, 0x4C, 0xC0, 0xF4, 0x2D,
1098
+ 0x16, 0xFA, 0xB4, 0x03, 0x26, 0xB3, 0x90, 0x4F, 0xAB, 0x65, 0xFC, 0xFE, 0x14, 0xF7, 0xE3, 0x94,
1099
+ 0xEE, 0xAC, 0x8C, 0x1A, 0xDE, 0xCB, 0x28, 0x40, 0x7D, 0xC8, 0xC4, 0x48, 0x6B, 0xDF, 0xA5, 0x52,
1100
+ 0xE5, 0xFB, 0xD7, 0x64, 0xF9, 0xF0, 0xD3, 0x5E, 0x66, 0x96, 0x8F, 0x1D, 0x45, 0x36, 0xCC, 0xC5,
1101
+ 0x4D, 0x9F, 0xBF, 0x0F, 0xD1, 0x08, 0xEB, 0x43, 0x42, 0x19, 0xE7, 0x99, 0xA8, 0x8E, 0x58, 0xC1,
1102
+ 0x9A, 0xD4, 0x18, 0x47, 0xAA, 0xAF, 0xBC, 0x5B, 0xD5, 0x11, 0xD0, 0xB0, 0x70, 0xBB, 0x0D, 0xBA])
1103
+
1104
+ #source: https://crypto.stackexchange.com/questions/11935/how-is-the-md2-hash-function-s-table-constructed-from-pi
1105
+ # structure: pseudo-random, derived from the digits of pi
1106
+ MD2 = SBox([
1107
+ 0x29,0x2E,0x43,0xC9,0xA2,0xD8,0x7C,0x01,0x3D,0x36,0x54,0xA1,0xEC,0xF0,0x06,0x13,
1108
+ 0x62,0xA7,0x05,0xF3,0xC0,0xC7,0x73,0x8C,0x98,0x93,0x2B,0xD9,0xBC,0x4C,0x82,0xCA,
1109
+ 0x1E,0x9B,0x57,0x3C,0xFD,0xD4,0xE0,0x16,0x67,0x42,0x6F,0x18,0x8A,0x17,0xE5,0x12,
1110
+ 0xBE,0x4E,0xC4,0xD6,0xDA,0x9E,0xDE,0x49,0xA0,0xFB,0xF5,0x8E,0xBB,0x2F,0xEE,0x7A,
1111
+ 0xA9,0x68,0x79,0x91,0x15,0xB2,0x07,0x3F,0x94,0xC2,0x10,0x89,0x0B,0x22,0x5F,0x21,
1112
+ 0x80,0x7F,0x5D,0x9A,0x5A,0x90,0x32,0x27,0x35,0x3E,0xCC,0xE7,0xBF,0xF7,0x97,0x03,
1113
+ 0xFF,0x19,0x30,0xB3,0x48,0xA5,0xB5,0xD1,0xD7,0x5E,0x92,0x2A,0xAC,0x56,0xAA,0xC6,
1114
+ 0x4F,0xB8,0x38,0xD2,0x96,0xA4,0x7D,0xB6,0x76,0xFC,0x6B,0xE2,0x9C,0x74,0x04,0xF1,
1115
+ 0x45,0x9D,0x70,0x59,0x64,0x71,0x87,0x20,0x86,0x5B,0xCF,0x65,0xE6,0x2D,0xA8,0x02,
1116
+ 0x1B,0x60,0x25,0xAD,0xAE,0xB0,0xB9,0xF6,0x1C,0x46,0x61,0x69,0x34,0x40,0x7E,0x0F,
1117
+ 0x55,0x47,0xA3,0x23,0xDD,0x51,0xAF,0x3A,0xC3,0x5C,0xF9,0xCE,0xBA,0xC5,0xEA,0x26,
1118
+ 0x2C,0x53,0x0D,0x6E,0x85,0x28,0x84,0x09,0xD3,0xDF,0xCD,0xF4,0x41,0x81,0x4D,0x52,
1119
+ 0x6A,0xDC,0x37,0xC8,0x6C,0xC1,0xAB,0xFA,0x24,0xE1,0x7B,0x08,0x0C,0xBD,0xB1,0x4A,
1120
+ 0x78,0x88,0x95,0x8B,0xE3,0x63,0xE8,0x6D,0xE9,0xCB,0xD5,0xFE,0x3B,0x00,0x1D,0x39,
1121
+ 0xF2,0xEF,0xB7,0x0E,0x66,0x58,0xD0,0xE4,0xA6,0x77,0x72,0xF8,0xEB,0x75,0x4B,0x0A,
1122
+ 0x31,0x44,0x50,0xB4,0x8F,0xED,0x1F,0x1A,0xDB,0x99,0x8D,0x33,0x9F,0x11,0x83,0x14])
1123
+
1124
+ newDES = SBox([
1125
+ 32,137,239,188,102,125,221, 72,212, 68, 81, 37, 86,237,147,149,
1126
+ 70,229, 17,124,115,207, 33, 20,122,143, 25,215, 51,183,138,142,
1127
+ 146,211,110,173, 1,228,189, 14,103, 78,162, 36,253,167,116,255,
1128
+ 158, 45,185, 50, 98,168,250,235, 54,141,195,247,240, 63,148, 2,
1129
+ 224,169,214,180, 62, 22,117,108, 19,172,161,159,160, 47, 43,171,
1130
+ 194,175,178, 56,196,112, 23,220, 89, 21,164,130,157, 8, 85,251,
1131
+ 216, 44, 94,179,226, 38, 90,119, 40,202, 34,206, 35, 69,231,246,
1132
+ 29,109, 74, 71,176, 6, 60,145, 65, 13, 77,151, 12,127, 95,199,
1133
+ 57,101, 5,232,150,210,129, 24,181, 10,121,187, 48,193,139,252,
1134
+ 219, 64, 88,233, 96,128, 80, 53,191,144,218, 11,106,132,155,104,
1135
+ 91,136, 31, 42,243, 66,126,135, 30, 26, 87,186,182,154,242,123,
1136
+ 82,166,208, 39,152,190,113,205,114,105,225, 84, 73,163, 99,111,
1137
+ 204, 61,200,217,170, 15,198, 28,192,254,134,234,222, 7,236,248,
1138
+ 201, 41,177,156, 92,131, 67,249,245,184,203, 9,241, 0, 27, 46,
1139
+ 133,174, 75, 18, 93,209,100,120, 76,213, 16, 83, 4,107,140, 52,
1140
+ 58, 55, 3,244, 97,197,238,227,118, 49, 79,230,223,165,153, 59])
1141
+
1142
+ Picaro = SBox([
1143
+ 0x08,0x0c,0x03,0x06,0x06,0x04,0x05,0x06,0x05,0x04,0x0c,0x0c,0x04,0x03,0x05,0x03,
1144
+ 0x0a,0x1f,0x29,0x3b,0x4b,0x55,0x62,0x7b,0x82,0x95,0xaf,0xbf,0xc5,0xd9,0xe2,0xf9,
1145
+ 0x01,0x2d,0x45,0x6a,0x8a,0xac,0xcf,0xea,0x9f,0xbc,0xdd,0xfd,0x1c,0x35,0x5f,0x75,
1146
+ 0x0f,0x34,0x61,0x52,0xc2,0xfb,0xa3,0x92,0x13,0x2b,0x74,0x44,0xdb,0xe1,0xb3,0x81,
1147
+ 0x0f,0x44,0x81,0xc2,0x92,0xdb,0x13,0x52,0xb3,0xfb,0x34,0x74,0x2b,0x61,0xa3,0xe1,
1148
+ 0x0e,0x59,0xa4,0xf8,0xd8,0x87,0x7c,0x28,0x3c,0x67,0x99,0xc9,0xe7,0xb4,0x4c,0x14,
1149
+ 0x02,0x63,0xca,0xad,0x1d,0x71,0xd7,0xbd,0x27,0x41,0xe3,0x83,0x31,0x5a,0xf7,0x9a,
1150
+ 0x0f,0x74,0xe1,0x92,0x52,0x2b,0xb3,0xc2,0xa3,0xdb,0x44,0x34,0xfb,0x81,0x13,0x61,
1151
+ 0x02,0x83,0x9a,0x1d,0xbd,0x31,0x27,0xad,0xf7,0x71,0x63,0xe3,0x41,0xca,0xd7,0x5a,
1152
+ 0x0e,0x99,0xb4,0x28,0xf8,0x67,0x4c,0xd8,0x7c,0xe7,0xc9,0x59,0x87,0x14,0x3c,0xa4,
1153
+ 0x0a,0xaf,0xd9,0x7b,0x3b,0x95,0xe2,0x4b,0x62,0xc5,0xbf,0x1f,0x55,0xf9,0x82,0x29,
1154
+ 0x0a,0xbf,0xf9,0x4b,0x7b,0xc5,0x82,0x3b,0xe2,0x55,0x1f,0xaf,0x95,0x29,0x62,0xd9,
1155
+ 0x0e,0xc9,0x14,0xd8,0x28,0xe7,0x3c,0xf8,0x4c,0x87,0x59,0x99,0x67,0xa4,0x7c,0xb4,
1156
+ 0x01,0xdd,0x35,0xea,0x6a,0xbc,0x5f,0x8a,0xcf,0x1c,0xfd,0x2d,0xac,0x75,0x9f,0x45,
1157
+ 0x02,0xe3,0x5a,0xbd,0xad,0x41,0xf7,0x1d,0xd7,0x31,0x83,0x63,0x71,0x9a,0x27,0xca,
1158
+ 0x01,0xfd,0x75,0x8a,0xea,0x1c,0x9f,0x6a,0x5f,0xac,0x2d,0xdd,0xbc,0x45,0xcf,0x35])
1159
+
1160
+ Safer = SBox([
1161
+ 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63,
1162
+ 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247,
1163
+ 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177,
1164
+ 255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131,
1165
+ 241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20,
1166
+ 129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160,
1167
+ 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252,
1168
+ 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217,
1169
+ 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194,
1170
+ 249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10,
1171
+ 193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80,
1172
+ 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126,
1173
+ 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237,
1174
+ 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97,
1175
+ 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5,
1176
+ 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40])
1177
+
1178
+ Scream = SBox([
1179
+ 0x20,0x8D,0xB2,0xDA,0x33,0x35,0xA6,0xFF,0x7A,0x52,0x6A,0xC6,0xA4,0xA8,0x51,0x23,
1180
+ 0xA2,0x96,0x30,0xAB,0xC8,0x17,0x14,0x9E,0xE8,0xF3,0xF8,0xDD,0x85,0xE2,0x4B,0xD8,
1181
+ 0x6C,0x01,0x0E,0x3D,0xB6,0x39,0x4A,0x83,0x6F,0xAA,0x86,0x6E,0x68,0x40,0x98,0x5F,
1182
+ 0x37,0x13,0x05,0x87,0x04,0x82,0x31,0x89,0x24,0x38,0x9D,0x54,0x22,0x7B,0x63,0xBD,
1183
+ 0x75,0x2C,0x47,0xE9,0xC2,0x60,0x43,0xAC,0x57,0xA1,0x1F,0x27,0xE7,0xAD,0x5C,0xD2,
1184
+ 0x0F,0x77,0xFD,0x08,0x79,0x3A,0x49,0x5D,0xED,0x90,0x65,0x7C,0x56,0x4F,0x2E,0x69,
1185
+ 0xCD,0x44,0x3F,0x62,0x5B,0x88,0x6B,0xC4,0x5E,0x2D,0x67,0x0B,0x9F,0x21,0x29,0x2A,
1186
+ 0xD6,0x7E,0x74,0xE0,0x41,0x73,0x50,0x76,0x55,0x97,0x3C,0x09,0x7D,0x5A,0x92,0x70,
1187
+ 0x84,0xB9,0x26,0x34,0x1D,0x81,0x32,0x2B,0x36,0x64,0xAE,0xC0,0x00,0xEE,0x8F,0xA7,
1188
+ 0xBE,0x58,0xDC,0x7F,0xEC,0x9B,0x78,0x10,0xCC,0x2F,0x94,0xF1,0x3B,0x9C,0x6D,0x16,
1189
+ 0x48,0xB5,0xCA,0x11,0xFA,0x0D,0x8E,0x07,0xB1,0x0C,0x12,0x28,0x4C,0x46,0xF4,0x8B,
1190
+ 0xA9,0xCF,0xBB,0x03,0xA0,0xFC,0xEF,0x25,0x80,0xF6,0xB3,0xBA,0x3E,0xF7,0xD5,0x91,
1191
+ 0xC3,0x8A,0xC1,0x45,0xDE,0x66,0xF5,0x0A,0xC9,0x15,0xD9,0xA3,0x61,0x99,0xB0,0xE4,
1192
+ 0xD1,0xFB,0xD3,0x4E,0xBF,0xD4,0xD7,0x71,0xCB,0x1E,0xDB,0x02,0x1A,0x93,0xEA,0xC5,
1193
+ 0xEB,0x72,0xF9,0x1C,0xE5,0xCE,0x4D,0xF2,0x42,0x19,0xE1,0xDF,0x59,0x95,0xB7,0x8C,
1194
+ 0x9A,0xF0,0x18,0xE6,0xC7,0xAF,0xBC,0xB8,0xE3,0x1B,0xD0,0xA5,0x53,0xB4,0x06,0xFE])
1195
+
1196
+ # Source: https://tools.ietf.org/html/rfc4269
1197
+ SEED_S0 = SBox([
1198
+ 0xA9,0x85,0xD6,0xD3,0x54,0x1D,0xAC,0x25,0x5D,0x43,0x18,0x1E,0x51,0xFC,0xCA,0x63,
1199
+ 0x28,0x44,0x20,0x9D,0xE0,0xE2,0xC8,0x17,0xA5,0x8F,0x03,0x7B,0xBB,0x13,0xD2,0xEE,
1200
+ 0x70,0x8C,0x3F,0xA8,0x32,0xDD,0xF6,0x74,0xEC,0x95,0x0B,0x57,0x5C,0x5B,0xBD,0x01,
1201
+ 0x24,0x1C,0x73,0x98,0x10,0xCC,0xF2,0xD9,0x2C,0xE7,0x72,0x83,0x9B,0xD1,0x86,0xC9,
1202
+ 0x60,0x50,0xA3,0xEB,0x0D,0xB6,0x9E,0x4F,0xB7,0x5A,0xC6,0x78,0xA6,0x12,0xAF,0xD5,
1203
+ 0x61,0xC3,0xB4,0x41,0x52,0x7D,0x8D,0x08,0x1F,0x99,0x00,0x19,0x04,0x53,0xF7,0xE1,
1204
+ 0xFD,0x76,0x2F,0x27,0xB0,0x8B,0x0E,0xAB,0xA2,0x6E,0x93,0x4D,0x69,0x7C,0x09,0x0A,
1205
+ 0xBF,0xEF,0xF3,0xC5,0x87,0x14,0xFE,0x64,0xDE,0x2E,0x4B,0x1A,0x06,0x21,0x6B,0x66,
1206
+ 0x02,0xF5,0x92,0x8A,0x0C,0xB3,0x7E,0xD0,0x7A,0x47,0x96,0xE5,0x26,0x80,0xAD,0xDF,
1207
+ 0xA1,0x30,0x37,0xAE,0x36,0x15,0x22,0x38,0xF4,0xA7,0x45,0x4C,0x81,0xE9,0x84,0x97,
1208
+ 0x35,0xCB,0xCE,0x3C,0x71,0x11,0xC7,0x89,0x75,0xFB,0xDA,0xF8,0x94,0x59,0x82,0xC4,
1209
+ 0xFF,0x49,0x39,0x67,0xC0,0xCF,0xD7,0xB8,0x0F,0x8E,0x42,0x23,0x91,0x6C,0xDB,0xA4,
1210
+ 0x34,0xF1,0x48,0xC2,0x6F,0x3D,0x2D,0x40,0xBE,0x3E,0xBC,0xC1,0xAA,0xBA,0x4E,0x55,
1211
+ 0x3B,0xDC,0x68,0x7F,0x9C,0xD8,0x4A,0x56,0x77,0xA0,0xED,0x46,0xB5,0x2B,0x65,0xFA,
1212
+ 0xE3,0xB9,0xB1,0x9F,0x5E,0xF9,0xE6,0xB2,0x31,0xEA,0x6D,0x5F,0xE4,0xF0,0xCD,0x88,
1213
+ 0x16,0x3A,0x58,0xD4,0x62,0x29,0x07,0x33,0xE8,0x1B,0x05,0x79,0x90,0x6A,0x2A,0x9A])
1214
+
1215
+ SEED_S1 = SBox([
1216
+ 0x38,0xE8,0x2D,0xA6,0xCF,0xDE,0xB3,0xB8,0xAF,0x60,0x55,0xC7,0x44,0x6F,0x6B,0x5B,
1217
+ 0xC3,0x62,0x33,0xB5,0x29,0xA0,0xE2,0xA7,0xD3,0x91,0x11,0x06,0x1C,0xBC,0x36,0x4B,
1218
+ 0xEF,0x88,0x6C,0xA8,0x17,0xC4,0x16,0xF4,0xC2,0x45,0xE1,0xD6,0x3F,0x3D,0x8E,0x98,
1219
+ 0x28,0x4E,0xF6,0x3E,0xA5,0xF9,0x0D,0xDF,0xD8,0x2B,0x66,0x7A,0x27,0x2F,0xF1,0x72,
1220
+ 0x42,0xD4,0x41,0xC0,0x73,0x67,0xAC,0x8B,0xF7,0xAD,0x80,0x1F,0xCA,0x2C,0xAA,0x34,
1221
+ 0xD2,0x0B,0xEE,0xE9,0x5D,0x94,0x18,0xF8,0x57,0xAE,0x08,0xC5,0x13,0xCD,0x86,0xB9,
1222
+ 0xFF,0x7D,0xC1,0x31,0xF5,0x8A,0x6A,0xB1,0xD1,0x20,0xD7,0x02,0x22,0x04,0x68,0x71,
1223
+ 0x07,0xDB,0x9D,0x99,0x61,0xBE,0xE6,0x59,0xDD,0x51,0x90,0xDC,0x9A,0xA3,0xAB,0xD0,
1224
+ 0x81,0x0F,0x47,0x1A,0xE3,0xEC,0x8D,0xBF,0x96,0x7B,0x5C,0xA2,0xA1,0x63,0x23,0x4D,
1225
+ 0xC8,0x9E,0x9C,0x3A,0x0C,0x2E,0xBA,0x6E,0x9F,0x5A,0xF2,0x92,0xF3,0x49,0x78,0xCC,
1226
+ 0x15,0xFB,0x70,0x75,0x7F,0x35,0x10,0x03,0x64,0x6D,0xC6,0x74,0xD5,0xB4,0xEA,0x09,
1227
+ 0x76,0x19,0xFE,0x40,0x12,0xE0,0xBD,0x05,0xFA,0x01,0xF0,0x2A,0x5E,0xA9,0x56,0x43,
1228
+ 0x85,0x14,0x89,0x9B,0xB0,0xE5,0x48,0x79,0x97,0xFC,0x1E,0x82,0x21,0x8C,0x1B,0x5F,
1229
+ 0x77,0x54,0xB2,0x1D,0x25,0x4F,0x00,0x46,0xED,0x58,0x52,0xEB,0x7E,0xDA,0xC9,0xFD,
1230
+ 0x30,0x95,0x65,0x3C,0xB6,0xE4,0xBB,0x7C,0x0E,0x50,0x39,0x26,0x32,0x84,0x69,0x93,
1231
+ 0x37,0xE7,0x24,0xA4,0xCB,0x53,0x0A,0x87,0xD9,0x4C,0x83,0x8F,0xCE,0x3B,0x4A,0xB7])
1232
+
1233
+ SKINNY_8 = SBox([
1234
+ 0x65,0x4c,0x6a,0x42,0x4b,0x63,0x43,0x6b,0x55,0x75,0x5a,0x7a,0x53,0x73,0x5b,0x7b,
1235
+ 0x35,0x8c,0x3a,0x81,0x89,0x33,0x80,0x3b,0x95,0x25,0x98,0x2a,0x90,0x23,0x99,0x2b,
1236
+ 0xe5,0xcc,0xe8,0xc1,0xc9,0xe0,0xc0,0xe9,0xd5,0xf5,0xd8,0xf8,0xd0,0xf0,0xd9,0xf9,
1237
+ 0xa5,0x1c,0xa8,0x12,0x1b,0xa0,0x13,0xa9,0x05,0xb5,0x0a,0xb8,0x03,0xb0,0x0b,0xb9,
1238
+ 0x32,0x88,0x3c,0x85,0x8d,0x34,0x84,0x3d,0x91,0x22,0x9c,0x2c,0x94,0x24,0x9d,0x2d,
1239
+ 0x62,0x4a,0x6c,0x45,0x4d,0x64,0x44,0x6d,0x52,0x72,0x5c,0x7c,0x54,0x74,0x5d,0x7d,
1240
+ 0xa1,0x1a,0xac,0x15,0x1d,0xa4,0x14,0xad,0x02,0xb1,0x0c,0xbc,0x04,0xb4,0x0d,0xbd,
1241
+ 0xe1,0xc8,0xec,0xc5,0xcd,0xe4,0xc4,0xed,0xd1,0xf1,0xdc,0xfc,0xd4,0xf4,0xdd,0xfd,
1242
+ 0x36,0x8e,0x38,0x82,0x8b,0x30,0x83,0x39,0x96,0x26,0x9a,0x28,0x93,0x20,0x9b,0x29,
1243
+ 0x66,0x4e,0x68,0x41,0x49,0x60,0x40,0x69,0x56,0x76,0x58,0x78,0x50,0x70,0x59,0x79,
1244
+ 0xa6,0x1e,0xaa,0x11,0x19,0xa3,0x10,0xab,0x06,0xb6,0x08,0xba,0x00,0xb3,0x09,0xbb,
1245
+ 0xe6,0xce,0xea,0xc2,0xcb,0xe3,0xc3,0xeb,0xd6,0xf6,0xda,0xfa,0xd3,0xf3,0xdb,0xfb,
1246
+ 0x31,0x8a,0x3e,0x86,0x8f,0x37,0x87,0x3f,0x92,0x21,0x9e,0x2e,0x97,0x27,0x9f,0x2f,
1247
+ 0x61,0x48,0x6e,0x46,0x4f,0x67,0x47,0x6f,0x51,0x71,0x5e,0x7e,0x57,0x77,0x5f,0x7f,
1248
+ 0xa2,0x18,0xae,0x16,0x1f,0xa7,0x17,0xaf,0x01,0xb2,0x0e,0xbe,0x07,0xb7,0x0f,0xbf,
1249
+ 0xe2,0xca,0xee,0xc6,0xcf,0xe7,0xc7,0xef,0xd2,0xf2,0xde,0xfe,0xd7,0xf7,0xdf,0xff])
1250
+
1251
+ ForkSkinny_8 = SKINNY_8
1252
+ Remus_8 = SKINNY_8
1253
+ Romulus = SKINNY_8
1254
+
1255
+ Skipjack = SBox([
1256
+ 0xa3,0xd7,0x09,0x83,0xf8,0x48,0xf6,0xf4,0xb3,0x21,0x15,0x78,0x99,0xb1,0xaf,0xf9,
1257
+ 0xe7,0x2d,0x4d,0x8a,0xce,0x4c,0xca,0x2e,0x52,0x95,0xd9,0x1e,0x4e,0x38,0x44,0x28,
1258
+ 0x0a,0xdf,0x02,0xa0,0x17,0xf1,0x60,0x68,0x12,0xb7,0x7a,0xc3,0xe9,0xfa,0x3d,0x53,
1259
+ 0x96,0x84,0x6b,0xba,0xf2,0x63,0x9a,0x19,0x7c,0xae,0xe5,0xf5,0xf7,0x16,0x6a,0xa2,
1260
+ 0x39,0xb6,0x7b,0x0f,0xc1,0x93,0x81,0x1b,0xee,0xb4,0x1a,0xea,0xd0,0x91,0x2f,0xb8,
1261
+ 0x55,0xb9,0xda,0x85,0x3f,0x41,0xbf,0xe0,0x5a,0x58,0x80,0x5f,0x66,0x0b,0xd8,0x90,
1262
+ 0x35,0xd5,0xc0,0xa7,0x33,0x06,0x65,0x69,0x45,0x00,0x94,0x56,0x6d,0x98,0x9b,0x76,
1263
+ 0x97,0xfc,0xb2,0xc2,0xb0,0xfe,0xdb,0x20,0xe1,0xeb,0xd6,0xe4,0xdd,0x47,0x4a,0x1d,
1264
+ 0x42,0xed,0x9e,0x6e,0x49,0x3c,0xcd,0x43,0x27,0xd2,0x07,0xd4,0xde,0xc7,0x67,0x18,
1265
+ 0x89,0xcb,0x30,0x1f,0x8d,0xc6,0x8f,0xaa,0xc8,0x74,0xdc,0xc9,0x5d,0x5c,0x31,0xa4,
1266
+ 0x70,0x88,0x61,0x2c,0x9f,0x0d,0x2b,0x87,0x50,0x82,0x54,0x64,0x26,0x7d,0x03,0x40,
1267
+ 0x34,0x4b,0x1c,0x73,0xd1,0xc4,0xfd,0x3b,0xcc,0xfb,0x7f,0xab,0xe6,0x3e,0x5b,0xa5,
1268
+ 0xad,0x04,0x23,0x9c,0x14,0x51,0x22,0xf0,0x29,0x79,0x71,0x7e,0xff,0x8c,0x0e,0xe2,
1269
+ 0x0c,0xef,0xbc,0x72,0x75,0x6f,0x37,0xa1,0xec,0xd3,0x8e,0x62,0x8b,0x86,0x10,0xe8,
1270
+ 0x08,0x77,0x11,0xbe,0x92,0x4f,0x24,0xc5,0x32,0x36,0x9d,0xcf,0xf3,0xa6,0xbb,0xac,
1271
+ 0x5e,0x6c,0xa9,0x13,0x57,0x25,0xb5,0xe3,0xbd,0xa8,0x3a,0x01,0x05,0x59,0x2a,0x46])
1272
+
1273
+ # source: www.gsma.com/aboutus/wp-content/uploads/2014/12/snow3gspec.doc
1274
+ SNOW_3G_sq = SBox([
1275
+ 0x25,0x24,0x73,0x67,0xD7,0xAE,0x5C,0x30,0xA4,0xEE,0x6E,0xCB,0x7D,0xB5,0x82,0xDB,
1276
+ 0xE4,0x8E,0x48,0x49,0x4F,0x5D,0x6A,0x78,0x70,0x88,0xE8,0x5F,0x5E,0x84,0x65,0xE2,
1277
+ 0xD8,0xE9,0xCC,0xED,0x40,0x2F,0x11,0x28,0x57,0xD2,0xAC,0xE3,0x4A,0x15,0x1B,0xB9,
1278
+ 0xB2,0x80,0x85,0xA6,0x2E,0x02,0x47,0x29,0x07,0x4B,0x0E,0xC1,0x51,0xAA,0x89,0xD4,
1279
+ 0xCA,0x01,0x46,0xB3,0xEF,0xDD,0x44,0x7B,0xC2,0x7F,0xBE,0xC3,0x9F,0x20,0x4C,0x64,
1280
+ 0x83,0xA2,0x68,0x42,0x13,0xB4,0x41,0xCD,0xBA,0xC6,0xBB,0x6D,0x4D,0x71,0x21,0xF4,
1281
+ 0x8D,0xB0,0xE5,0x93,0xFE,0x8F,0xE6,0xCF,0x43,0x45,0x31,0x22,0x37,0x36,0x96,0xFA,
1282
+ 0xBC,0x0F,0x08,0x52,0x1D,0x55,0x1A,0xC5,0x4E,0x23,0x69,0x7A,0x92,0xFF,0x5B,0x5A,
1283
+ 0xEB,0x9A,0x1C,0xA9,0xD1,0x7E,0x0D,0xFC,0x50,0x8A,0xB6,0x62,0xF5,0x0A,0xF8,0xDC,
1284
+ 0x03,0x3C,0x0C,0x39,0xF1,0xB8,0xF3,0x3D,0xF2,0xD5,0x97,0x66,0x81,0x32,0xA0,0x00,
1285
+ 0x06,0xCE,0xF6,0xEA,0xB7,0x17,0xF7,0x8C,0x79,0xD6,0xA7,0xBF,0x8B,0x3F,0x1F,0x53,
1286
+ 0x63,0x75,0x35,0x2C,0x60,0xFD,0x27,0xD3,0x94,0xA5,0x7C,0xA1,0x05,0x58,0x2D,0xBD,
1287
+ 0xD9,0xC7,0xAF,0x6B,0x54,0x0B,0xE0,0x38,0x04,0xC8,0x9D,0xE7,0x14,0xB1,0x87,0x9C,
1288
+ 0xDF,0x6F,0xF9,0xDA,0x2A,0xC4,0x59,0x16,0x74,0x91,0xAB,0x26,0x61,0x76,0x34,0x2B,
1289
+ 0xAD,0x99,0xFB,0x72,0xEC,0x33,0x12,0xDE,0x98,0x3B,0xC0,0x9B,0x3E,0x18,0x10,0x3A,
1290
+ 0x56,0xE1,0x77,0xC9,0x1E,0x9E,0x95,0xA3,0x90,0x19,0xA8,0x6C,0x09,0xD0,0xF0,0x86])
1291
+
1292
+ SMS4 = SBox([
1293
+ 0xd6,0x90,0xe9,0xfe,0xcc,0xe1,0x3d,0xb7,0x16,0xb6,0x14,0xc2,0x28,0xfb,0x2c,0x05,
1294
+ 0x2b,0x67,0x9a,0x76,0x2a,0xbe,0x04,0xc3,0xaa,0x44,0x13,0x26,0x49,0x86,0x06,0x99,
1295
+ 0x9c,0x42,0x50,0xf4,0x91,0xef,0x98,0x7a,0x33,0x54,0x0b,0x43,0xed,0xcf,0xac,0x62,
1296
+ 0xe4,0xb3,0x1c,0xa9,0xc9,0x08,0xe8,0x95,0x80,0xdf,0x94,0xfa,0x75,0x8f,0x3f,0xa6,
1297
+ 0x47,0x07,0xa7,0xfc,0xf3,0x73,0x17,0xba,0x83,0x59,0x3c,0x19,0xe6,0x85,0x4f,0xa8,
1298
+ 0x68,0x6b,0x81,0xb2,0x71,0x64,0xda,0x8b,0xf8,0xeb,0x0f,0x4b,0x70,0x56,0x9d,0x35,
1299
+ 0x1e,0x24,0x0e,0x5e,0x63,0x58,0xd1,0xa2,0x25,0x22,0x7c,0x3b,0x01,0x21,0x78,0x87,
1300
+ 0xd4,0x00,0x46,0x57,0x9f,0xd3,0x27,0x52,0x4c,0x36,0x02,0xe7,0xa0,0xc4,0xc8,0x9e,
1301
+ 0xea,0xbf,0x8a,0xd2,0x40,0xc7,0x38,0xb5,0xa3,0xf7,0xf2,0xce,0xf9,0x61,0x15,0xa1,
1302
+ 0xe0,0xae,0x5d,0xa4,0x9b,0x34,0x1a,0x55,0xad,0x93,0x32,0x30,0xf5,0x8c,0xb1,0xe3,
1303
+ 0x1d,0xf6,0xe2,0x2e,0x82,0x66,0xca,0x60,0xc0,0x29,0x23,0xab,0x0d,0x53,0x4e,0x6f,
1304
+ 0xd5,0xdb,0x37,0x45,0xde,0xfd,0x8e,0x2f,0x03,0xff,0x6a,0x72,0x6d,0x6c,0x5b,0x51,
1305
+ 0x8d,0x1b,0xaf,0x92,0xbb,0xdd,0xbc,0x7f,0x11,0xd9,0x5c,0x41,0x1f,0x10,0x5a,0xd8,
1306
+ 0x0a,0xc1,0x31,0x88,0xa5,0xcd,0x7b,0xbd,0x2d,0x74,0xd0,0x12,0xb8,0xe5,0xb4,0xb0,
1307
+ 0x89,0x69,0x97,0x4a,0x0c,0x96,0x77,0x7e,0x65,0xb9,0xf1,0x09,0xc5,0x6e,0xc6,0x84,
1308
+ 0x18,0xf0,0x7d,0xec,0x3a,0xdc,0x4d,0x20,0x79,0xee,0x5f,0x3e,0xd7,0xcb,0x39,0x48])
1309
+
1310
+ # source: https://www.iacr.org/archive/fse2003/28870306/28870306.pdf
1311
+ # structure: random, obtained from RC4
1312
+ Turing = SBox([
1313
+ 0x61,0x51,0xeb,0x19,0xb9,0x5d,0x60,0x38,0x7c,0xb2,0x06,0x12,0xc4,0x5b,0x16,0x3b,
1314
+ 0x2b,0x18,0x83,0xb0,0x7f,0x75,0xfa,0xa0,0xe9,0xdd,0x6d,0x7a,0x6b,0x68,0x2d,0x49,
1315
+ 0xb5,0x1c,0x90,0xf7,0xed,0x9f,0xe8,0xce,0xae,0x77,0xc2,0x13,0xfd,0xcd,0x3e,0xcf,
1316
+ 0x37,0x6a,0xd4,0xdb,0x8e,0x65,0x1f,0x1a,0x87,0xcb,0x40,0x15,0x88,0x0d,0x35,0xb3,
1317
+ 0x11,0x0f,0xd0,0x30,0x48,0xf9,0xa8,0xac,0x85,0x27,0x0e,0x8a,0xe0,0x50,0x64,0xa7,
1318
+ 0xcc,0xe4,0xf1,0x98,0xff,0xa1,0x04,0xda,0xd5,0xbc,0x1b,0xbb,0xd1,0xfe,0x31,0xca,
1319
+ 0xba,0xd9,0x2e,0xf3,0x1d,0x47,0x4a,0x3d,0x71,0x4c,0xab,0x7d,0x8d,0xc7,0x59,0xb8,
1320
+ 0xc1,0x96,0x1e,0xfc,0x44,0xc8,0x7b,0xdc,0x5c,0x78,0x2a,0x9d,0xa5,0xf0,0x73,0x22,
1321
+ 0x89,0x05,0xf4,0x07,0x21,0x52,0xa6,0x28,0x9a,0x92,0x69,0x8f,0xc5,0xc3,0xf5,0xe1,
1322
+ 0xde,0xec,0x09,0xf2,0xd3,0xaf,0x34,0x23,0xaa,0xdf,0x7e,0x82,0x29,0xc0,0x24,0x14,
1323
+ 0x03,0x32,0x4e,0x39,0x6f,0xc6,0xb1,0x9b,0xea,0x72,0x79,0x41,0xd8,0x26,0x6c,0x5e,
1324
+ 0x2c,0xb4,0xa2,0x53,0x57,0xe2,0x9c,0x86,0x54,0x95,0xb6,0x80,0x8c,0x36,0x67,0xbd,
1325
+ 0x08,0x93,0x2f,0x99,0x5a,0xf8,0x3a,0xd7,0x56,0x84,0xd2,0x01,0xf6,0x66,0x4d,0x55,
1326
+ 0x8b,0x0c,0x0b,0x46,0xb7,0x3c,0x45,0x91,0xa4,0xe3,0x70,0xd6,0xfb,0xe6,0x10,0xa9,
1327
+ 0xc9,0x00,0x9e,0xe7,0x4f,0x76,0x25,0x3f,0x5f,0xa3,0x33,0x20,0x02,0xef,0x62,0x74,
1328
+ 0xee,0x17,0x81,0x42,0x58,0x0a,0x4b,0x63,0xe5,0xbe,0x6e,0xad,0xbf,0x43,0x94,0x97])
1329
+
1330
+ # source: https://www.schneier.com/cryptography/paperfiles/paper-twofish-paper.pdf
1331
+ # structure: ASAS, the 4 bit S-Boxes q0 ti for i=0..3 are provided below
1332
+ Twofish_p0 = SBox([
1333
+ 0xA9,0x67,0xB3,0xE8,0x04,0xFD,0xA3,0x76,0x9A,0x92,0x80,0x78,0xE4,0xDD,0xD1,0x38,
1334
+ 0x0D,0xC6,0x35,0x98,0x18,0xF7,0xEC,0x6C,0x43,0x75,0x37,0x26,0xFA,0x13,0x94,0x48,
1335
+ 0xF2,0xD0,0x8B,0x30,0x84,0x54,0xDF,0x23,0x19,0x5B,0x3D,0x59,0xF3,0xAE,0xA2,0x82,
1336
+ 0x63,0x01,0x83,0x2E,0xD9,0x51,0x9B,0x7C,0xA6,0xEB,0xA5,0xBE,0x16,0x0C,0xE3,0x61,
1337
+ 0xC0,0x8C,0x3A,0xF5,0x73,0x2C,0x25,0x0B,0xBB,0x4E,0x89,0x6B,0x53,0x6A,0xB4,0xF1,
1338
+ 0xE1,0xE6,0xBD,0x45,0xE2,0xF4,0xB6,0x66,0xCC,0x95,0x03,0x56,0xD4,0x1C,0x1E,0xD7,
1339
+ 0xFB,0xC3,0x8E,0xB5,0xE9,0xCF,0xBF,0xBA,0xEA,0x77,0x39,0xAF,0x33,0xC9,0x62,0x71,
1340
+ 0x81,0x79,0x09,0xAD,0x24,0xCD,0xF9,0xD8,0xE5,0xC5,0xB9,0x4D,0x44,0x08,0x86,0xE7,
1341
+ 0xA1,0x1D,0xAA,0xED,0x06,0x70,0xB2,0xD2,0x41,0x7B,0xA0,0x11,0x31,0xC2,0x27,0x90,
1342
+ 0x20,0xF6,0x60,0xFF,0x96,0x5C,0xB1,0xAB,0x9E,0x9C,0x52,0x1B,0x5F,0x93,0x0A,0xEF,
1343
+ 0x91,0x85,0x49,0xEE,0x2D,0x4F,0x8F,0x3B,0x47,0x87,0x6D,0x46,0xD6,0x3E,0x69,0x64,
1344
+ 0x2A,0xCE,0xCB,0x2F,0xFC,0x97,0x05,0x7A,0xAC,0x7F,0xD5,0x1A,0x4B,0x0E,0xA7,0x5A,
1345
+ 0x28,0x14,0x3F,0x29,0x88,0x3C,0x4C,0x02,0xB8,0xDA,0xB0,0x17,0x55,0x1F,0x8A,0x7D,
1346
+ 0x57,0xC7,0x8D,0x74,0xB7,0xC4,0x9F,0x72,0x7E,0x15,0x22,0x12,0x58,0x07,0x99,0x34,
1347
+ 0x6E,0x50,0xDE,0x68,0x65,0xBC,0xDB,0xF8,0xC8,0xA8,0x2B,0x40,0xDC,0xFE,0x32,0xA4,
1348
+ 0xCA,0x10,0x21,0xF0,0xD3,0x5D,0x0F,0x00,0x6F,0x9D,0x36,0x42,0x4A,0x5E,0xC1,0xE0])
1349
+
1350
+ # source: https://www.schneier.com/cryptography/paperfiles/paper-twofish-paper.pdf
1351
+ # structure: ASAS, the 4 bit S-Boxes q1 ti for i=0..3 are provided below
1352
+ Twofish_p1 = SBox([
1353
+ 0x75,0xF3,0xC6,0xF4,0xDB,0x7B,0xFB,0xC8,0x4A,0xD3,0xE6,0x6B,0x45,0x7D,0xE8,0x4B,
1354
+ 0xD6,0x32,0xD8,0xFD,0x37,0x71,0xF1,0xE1,0x30,0x0F,0xF8,0x1B,0x87,0xFA,0x06,0x3F,
1355
+ 0x5E,0xBA,0xAE,0x5B,0x8A,0x00,0xBC,0x9D,0x6D,0xC1,0xB1,0x0E,0x80,0x5D,0xD2,0xD5,
1356
+ 0xA0,0x84,0x07,0x14,0xB5,0x90,0x2C,0xA3,0xB2,0x73,0x4C,0x54,0x92,0x74,0x36,0x51,
1357
+ 0x38,0xB0,0xBD,0x5A,0xFC,0x60,0x62,0x96,0x6C,0x42,0xF7,0x10,0x7C,0x28,0x27,0x8C,
1358
+ 0x13,0x95,0x9C,0xC7,0x24,0x46,0x3B,0x70,0xCA,0xE3,0x85,0xCB,0x11,0xD0,0x93,0xB8,
1359
+ 0xA6,0x83,0x20,0xFF,0x9F,0x77,0xC3,0xCC,0x03,0x6F,0x08,0xBF,0x40,0xE7,0x2B,0xE2,
1360
+ 0x79,0x0C,0xAA,0x82,0x41,0x3A,0xEA,0xB9,0xE4,0x9A,0xA4,0x97,0x7E,0xDA,0x7A,0x17,
1361
+ 0x66,0x94,0xA1,0x1D,0x3D,0xF0,0xDE,0xB3,0x0B,0x72,0xA7,0x1C,0xEF,0xD1,0x53,0x3E,
1362
+ 0x8F,0x33,0x26,0x5F,0xEC,0x76,0x2A,0x49,0x81,0x88,0xEE,0x21,0xC4,0x1A,0xEB,0xD9,
1363
+ 0xC5,0x39,0x99,0xCD,0xAD,0x31,0x8B,0x01,0x18,0x23,0xDD,0x1F,0x4E,0x2D,0xF9,0x48,
1364
+ 0x4F,0xF2,0x65,0x8E,0x78,0x5C,0x58,0x19,0x8D,0xE5,0x98,0x57,0x67,0x7F,0x05,0x64,
1365
+ 0xAF,0x63,0xB6,0xFE,0xF5,0xB7,0x3C,0xA5,0xCE,0xE9,0x68,0x44,0xE0,0x4D,0x43,0x69,
1366
+ 0x29,0x2E,0xAC,0x15,0x59,0xA8,0x0A,0x9E,0x6E,0x47,0xDF,0x34,0x35,0x6A,0xCF,0xDC,
1367
+ 0x22,0xC9,0xC0,0x9B,0x89,0xD4,0xED,0xAB,0x12,0xA2,0x0D,0x52,0xBB,0x02,0x2F,0xA9,
1368
+ 0xD7,0x61,0x1E,0xB4,0x50,0x04,0xF6,0xC2,0x16,0x25,0x86,0x56,0x55,0x09,0xBE,0x91])
1369
+
1370
+ Whirlpool = SBox([
1371
+ 0x18,0x23,0xc6,0xE8,0x87,0xB8,0x01,0x4F,0x36,0xA6,0xd2,0xF5,0x79,0x6F,0x91,0x52,
1372
+ 0x60,0xBc,0x9B,0x8E,0xA3,0x0c,0x7B,0x35,0x1d,0xE0,0xd7,0xc2,0x2E,0x4B,0xFE,0x57,
1373
+ 0x15,0x77,0x37,0xE5,0x9F,0xF0,0x4A,0xdA,0x58,0xc9,0x29,0x0A,0xB1,0xA0,0x6B,0x85,
1374
+ 0xBd,0x5d,0x10,0xF4,0xcB,0x3E,0x05,0x67,0xE4,0x27,0x41,0x8B,0xA7,0x7d,0x95,0xd8,
1375
+ 0xFB,0xEE,0x7c,0x66,0xdd,0x17,0x47,0x9E,0xcA,0x2d,0xBF,0x07,0xAd,0x5A,0x83,0x33,
1376
+ 0x63,0x02,0xAA,0x71,0xc8,0x19,0x49,0xd9,0xF2,0xE3,0x5B,0x88,0x9A,0x26,0x32,0xB0,
1377
+ 0xE9,0x0F,0xd5,0x80,0xBE,0xcd,0x34,0x48,0xFF,0x7A,0x90,0x5F,0x20,0x68,0x1A,0xAE,
1378
+ 0xB4,0x54,0x93,0x22,0x64,0xF1,0x73,0x12,0x40,0x08,0xc3,0xEc,0xdB,0xA1,0x8d,0x3d,
1379
+ 0x97,0x00,0xcF,0x2B,0x76,0x82,0xd6,0x1B,0xB5,0xAF,0x6A,0x50,0x45,0xF3,0x30,0xEF,
1380
+ 0x3F,0x55,0xA2,0xEA,0x65,0xBA,0x2F,0xc0,0xdE,0x1c,0xFd,0x4d,0x92,0x75,0x06,0x8A,
1381
+ 0xB2,0xE6,0x0E,0x1F,0x62,0xd4,0xA8,0x96,0xF9,0xc5,0x25,0x59,0x84,0x72,0x39,0x4c,
1382
+ 0x5E,0x78,0x38,0x8c,0xd1,0xA5,0xE2,0x61,0xB3,0x21,0x9c,0x1E,0x43,0xc7,0xFc,0x04,
1383
+ 0x51,0x99,0x6d,0x0d,0xFA,0xdF,0x7E,0x24,0x3B,0xAB,0xcE,0x11,0x8F,0x4E,0xB7,0xEB,
1384
+ 0x3c,0x81,0x94,0xF7,0xB9,0x13,0x2c,0xd3,0xE7,0x6E,0xc4,0x03,0x56,0x44,0x7F,0xA9,
1385
+ 0x2A,0xBB,0xc1,0x53,0xdc,0x0B,0x9d,0x6c,0x31,0x74,0xF6,0x46,0xAc,0x89,0x14,0xE1,
1386
+ 0x16,0x3A,0x69,0x09,0x70,0xB6,0xd0,0xEd,0xcc,0x42,0x98,0xA4,0x28,0x5c,0xF8,0x86])
1387
+
1388
+ Zorro = SBox([
1389
+ 0xB2,0xE5,0x5E,0xFD,0x5F,0xC5,0x50,0xBC,0xDC,0x4A,0xFA,0x88,0x28,0xD8,0xE0,0xD1,
1390
+ 0xB5,0xD0,0x3C,0xB0,0x99,0xC1,0xE8,0xE2,0x13,0x59,0xA7,0xFB,0x71,0x34,0x31,0xF1,
1391
+ 0x9F,0x3A,0xCE,0x6E,0xA8,0xA4,0xB4,0x7E,0x1F,0xB7,0x51,0x1D,0x38,0x9D,0x46,0x69,
1392
+ 0x53,0xE,0x42,0x1B,0xF,0x11,0x68,0xCA,0xAA,0x6,0xF0,0xBD,0x26,0x6F,0x0,0xD9,
1393
+ 0x62,0xF3,0x15,0x60,0xF2,0x3D,0x7F,0x35,0x63,0x2D,0x67,0x93,0x1C,0x91,0xF9,0x9C,
1394
+ 0x66,0x2A,0x81,0x20,0x95,0xF8,0xE3,0x4D,0x5A,0x6D,0x24,0x7B,0xB9,0xEF,0xDF,0xDA,
1395
+ 0x58,0xA9,0x92,0x76,0x2E,0xB3,0x39,0xC,0x29,0xCD,0x43,0xFE,0xAB,0xF5,0x94,0x23,
1396
+ 0x16,0x80,0xC0,0x12,0x4C,0xE9,0x48,0x19,0x8,0xAE,0x41,0x70,0x84,0x14,0xA2,0xD5,
1397
+ 0xB8,0x33,0x65,0xBA,0xED,0x17,0xCF,0x96,0x1E,0x3B,0xB,0xC2,0xC8,0xB6,0xBB,0x8B,
1398
+ 0xA1,0x54,0x75,0xC4,0x10,0x5D,0xD6,0x25,0x97,0xE6,0xFC,0x49,0xF7,0x52,0x18,0x86,
1399
+ 0x8D,0xCB,0xE1,0xBF,0xD7,0x8E,0x37,0xBE,0x82,0xCC,0x64,0x90,0x7C,0x32,0x8F,0x4B,
1400
+ 0xAC,0x1A,0xEA,0xD3,0xF4,0x6B,0x2C,0xFF,0x55,0xA,0x45,0x9,0x89,0x1,0x30,0x2B,
1401
+ 0xD2,0x77,0x87,0x72,0xEB,0x36,0xDE,0x9E,0x8C,0xDB,0x6C,0x9B,0x5,0x2,0x4E,0xAF,
1402
+ 0x4,0xAD,0x74,0xC3,0xEE,0xA6,0xF6,0xC7,0x7D,0x40,0xD4,0xD,0x3E,0x5B,0xEC,0x78,
1403
+ 0xA0,0xB1,0x44,0x73,0x47,0x5C,0x98,0x21,0x22,0x61,0x3F,0xC6,0x7A,0x56,0xDD,0xE7,
1404
+ 0x85,0xC9,0x8A,0x57,0x27,0x7,0x9A,0x3,0xA3,0x83,0xE4,0x6A,0xA5,0x2F,0x79,0x4F])
1405
+
1406
+ ZUC_S0 = SBox([
1407
+ 0x3e,0x72,0x5b,0x47,0xca,0xe0,0x00,0x33,0x04,0xd1,0x54,0x98,0x09,0xb9,0x6d,0xcb,
1408
+ 0x7b,0x1b,0xf9,0x32,0xaf,0x9d,0x6a,0xa5,0xb8,0x2d,0xfc,0x1d,0x08,0x53,0x03,0x90,
1409
+ 0x4d,0x4e,0x84,0x99,0xe4,0xce,0xd9,0x91,0xdd,0xb6,0x85,0x48,0x8b,0x29,0x6e,0xac,
1410
+ 0xcd,0xc1,0xf8,0x1e,0x73,0x43,0x69,0xc6,0xb5,0xbd,0xfd,0x39,0x63,0x20,0xd4,0x38,
1411
+ 0x76,0x7d,0xb2,0xa7,0xcf,0xed,0x57,0xc5,0xf3,0x2c,0xbb,0x14,0x21,0x06,0x55,0x9b,
1412
+ 0xe3,0xef,0x5e,0x31,0x4f,0x7f,0x5a,0xa4,0x0d,0x82,0x51,0x49,0x5f,0xba,0x58,0x1c,
1413
+ 0x4a,0x16,0xd5,0x17,0xa8,0x92,0x24,0x1f,0x8c,0xff,0xd8,0xae,0x2e,0x01,0xd3,0xad,
1414
+ 0x3b,0x4b,0xda,0x46,0xeb,0xc9,0xde,0x9a,0x8f,0x87,0xd7,0x3a,0x80,0x6f,0x2f,0xc8,
1415
+ 0xb1,0xb4,0x37,0xf7,0x0a,0x22,0x13,0x28,0x7c,0xcc,0x3c,0x89,0xc7,0xc3,0x96,0x56,
1416
+ 0x07,0xbf,0x7e,0xf0,0x0b,0x2b,0x97,0x52,0x35,0x41,0x79,0x61,0xa6,0x4c,0x10,0xfe,
1417
+ 0xbc,0x26,0x95,0x88,0x8a,0xb0,0xa3,0xfb,0xc0,0x18,0x94,0xf2,0xe1,0xe5,0xe9,0x5d,
1418
+ 0xd0,0xdc,0x11,0x66,0x64,0x5c,0xec,0x59,0x42,0x75,0x12,0xf5,0x74,0x9c,0xaa,0x23,
1419
+ 0x0e,0x86,0xab,0xbe,0x2a,0x02,0xe7,0x67,0xe6,0x44,0xa2,0x6c,0xc2,0x93,0x9f,0xf1,
1420
+ 0xf6,0xfa,0x36,0xd2,0x50,0x68,0x9e,0x62,0x71,0x15,0x3d,0xd6,0x40,0xc4,0xe2,0x0f,
1421
+ 0x8e,0x83,0x77,0x6b,0x25,0x05,0x3f,0x0c,0x30,0xea,0x70,0xb7,0xa1,0xe8,0xa9,0x65,
1422
+ 0x8d,0x27,0x1a,0xdb,0x81,0xb3,0xa0,0xf4,0x45,0x7a,0x19,0xdf,0xee,0x78,0x34,0x60])
1423
+
1424
+ ZUC_S1 = SBox([
1425
+ 0x55,0xc2,0x63,0x71,0x3b,0xc8,0x47,0x86,0x9f,0x3c,0xda,0x5b,0x29,0xaa,0xfd,0x77,
1426
+ 0x8c,0xc5,0x94,0x0c,0xa6,0x1a,0x13,0x00,0xe3,0xa8,0x16,0x72,0x40,0xf9,0xf8,0x42,
1427
+ 0x44,0x26,0x68,0x96,0x81,0xd9,0x45,0x3e,0x10,0x76,0xc6,0xa7,0x8b,0x39,0x43,0xe1,
1428
+ 0x3a,0xb5,0x56,0x2a,0xc0,0x6d,0xb3,0x05,0x22,0x66,0xbf,0xdc,0x0b,0xfa,0x62,0x48,
1429
+ 0xdd,0x20,0x11,0x06,0x36,0xc9,0xc1,0xcf,0xf6,0x27,0x52,0xbb,0x69,0xf5,0xd4,0x87,
1430
+ 0x7f,0x84,0x4c,0xd2,0x9c,0x57,0xa4,0xbc,0x4f,0x9a,0xdf,0xfe,0xd6,0x8d,0x7a,0xeb,
1431
+ 0x2b,0x53,0xd8,0x5c,0xa1,0x14,0x17,0xfb,0x23,0xd5,0x7d,0x30,0x67,0x73,0x08,0x09,
1432
+ 0xee,0xb7,0x70,0x3f,0x61,0xb2,0x19,0x8e,0x4e,0xe5,0x4b,0x93,0x8f,0x5d,0xdb,0xa9,
1433
+ 0xad,0xf1,0xae,0x2e,0xcb,0x0d,0xfc,0xf4,0x2d,0x46,0x6e,0x1d,0x97,0xe8,0xd1,0xe9,
1434
+ 0x4d,0x37,0xa5,0x75,0x5e,0x83,0x9e,0xab,0x82,0x9d,0xb9,0x1c,0xe0,0xcd,0x49,0x89,
1435
+ 0x01,0xb6,0xbd,0x58,0x24,0xa2,0x5f,0x38,0x78,0x99,0x15,0x90,0x50,0xb8,0x95,0xe4,
1436
+ 0xd0,0x91,0xc7,0xce,0xed,0x0f,0xb4,0x6f,0xa0,0xcc,0xf0,0x02,0x4a,0x79,0xc3,0xde,
1437
+ 0xa3,0xef,0xea,0x51,0xe6,0x6b,0x18,0xec,0x1b,0x2c,0x80,0xf7,0x74,0xe7,0xff,0x21,
1438
+ 0x5a,0x6a,0x54,0x1e,0x41,0x31,0x92,0x35,0xc4,0x33,0x07,0x0a,0xba,0x7e,0x0e,0x34,
1439
+ 0x88,0xb1,0x98,0x7c,0xf3,0x3d,0x60,0x6c,0x7b,0xca,0xd3,0x1f,0x32,0x65,0x04,0x28,
1440
+ 0x64,0xbe,0x85,0x9b,0x2f,0x59,0x8a,0xd7,0xb0,0x25,0xac,0xaf,0x12,0x03,0xe2,0xf2])
1441
+
1442
+ # Bijective S-Boxes mapping 7 bits to 7
1443
+ # =====================================
1444
+
1445
+ WAGE = SBox([
1446
+ 0x2e, 0x1c, 0x6d, 0x2b, 0x35, 0x07, 0x7f, 0x3b, 0x28, 0x08, 0x0b, 0x5f, 0x31, 0x11, 0x1b, 0x4d,
1447
+ 0x6e, 0x54, 0x0d, 0x09, 0x1f, 0x45, 0x75, 0x53, 0x6a, 0x5d, 0x61, 0x00, 0x04, 0x78, 0x06, 0x1e,
1448
+ 0x37, 0x6f, 0x2f, 0x49, 0x64, 0x34, 0x7d, 0x19, 0x39, 0x33, 0x43, 0x57, 0x60, 0x62, 0x13, 0x05,
1449
+ 0x77, 0x47, 0x4f, 0x4b, 0x1d, 0x2d, 0x24, 0x48, 0x74, 0x58, 0x25, 0x5e, 0x5a, 0x76, 0x41, 0x42,
1450
+ 0x27, 0x3e, 0x6c, 0x01, 0x2c, 0x3c, 0x4e, 0x1a, 0x21, 0x2a, 0x0a, 0x55, 0x3a, 0x38, 0x18, 0x7e,
1451
+ 0x0c, 0x63, 0x67, 0x56, 0x50, 0x7c, 0x32, 0x7a, 0x68, 0x02, 0x6b, 0x17, 0x7b, 0x59, 0x71, 0x0f,
1452
+ 0x30, 0x10, 0x22, 0x3d, 0x40, 0x69, 0x52, 0x14, 0x36, 0x44, 0x46, 0x03, 0x16, 0x65, 0x66, 0x72,
1453
+ 0x12, 0x0e, 0x29, 0x4a, 0x4c, 0x70, 0x15, 0x26, 0x79, 0x51, 0x23, 0x3f, 0x73, 0x5b, 0x20, 0x5c])
1454
+
1455
+ # Bijective S-Boxes mapping 6 bits to 6
1456
+ # =====================================
1457
+
1458
+ Fides_6 = SBox([
1459
+ 0x36,0x00,0x30,0x0d,0x0f,0x12,0x23,0x35,0x3f,0x19,0x2d,0x34,0x03,0x14,0x21,0x29,
1460
+ 0x08,0x0a,0x39,0x25,0x3b,0x24,0x22,0x02,0x1a,0x32,0x3a,0x18,0x3c,0x13,0x0e,0x2a,
1461
+ 0x2e,0x3d,0x05,0x31,0x1f,0x0b,0x1c,0x04,0x0c,0x1e,0x37,0x16,0x09,0x06,0x20,0x17,
1462
+ 0x1b,0x27,0x15,0x11,0x10,0x1d,0x3e,0x01,0x28,0x2f,0x33,0x38,0x07,0x2b,0x26,0x2c])
1463
+
1464
+ APN_6 = SBox([
1465
+ 0x0,0x36,0x30,0xd,0xf,0x12,0x35,0x23,0x19,0x3f,0x2d,0x34,0x3,0x14,0x29,0x21,
1466
+ 0x3b,0x24,0x2,0x22,0xa,0x8,0x39,0x25,0x3c,0x13,0x2a,0xe,0x32,0x1a,0x3a,0x18,
1467
+ 0x27,0x1b,0x15,0x11,0x10,0x1d,0x1,0x3e,0x2f,0x28,0x33,0x38,0x7,0x2b,0x2c,0x26,
1468
+ 0x1f,0xb,0x4,0x1c,0x3d,0x2e,0x5,0x31,0x9,0x6,0x17,0x20,0x1e,0xc,0x37,0x16])
1469
+
1470
+ SC2000_6 = SBox([
1471
+ 47,59,25,42,15,23,28,39,26,38,36,19,60,24,29,56,
1472
+ 37,63,20,61,55,2,30,44,9,10,6,22,53,48,51,11,
1473
+ 62,52,35,18,14,46,0,54,17,40,27,4,31,8,5,12,
1474
+ 3,16,41,34,33,7,45,49,50,58,1,21,43,57,32,13])
1475
+
1476
+ # Bijective S-Boxes mapping 5 bits to 5
1477
+ # =====================================
1478
+
1479
+ Ascon = SBox([
1480
+ 0x04,0x0b,0x1f,0x14,0x1a,0x15,0x09,0x02,0x1b,0x05,0x08,0x12,0x1d,0x03,0x06,0x1c,
1481
+ 0x1e,0x13,0x07,0x0e,0x00,0x0d,0x11,0x18,0x10,0x0c,0x01,0x19,0x16,0x0a,0x0f,0x17])
1482
+ ISAP = Ascon
1483
+
1484
+ DryGASCON128 = SBox([0x04, 0x0f, 0x1b, 0x01, 0x0b, 0x00, 0x17, 0x0d, 0x1f,
1485
+ 0x1c, 0x02, 0x10, 0x12, 0x11, 0x0c, 0x1e, 0x1a, 0x19,
1486
+ 0x14, 0x06, 0x15, 0x16, 0x18, 0x0a, 0x05, 0x0e, 0x09,
1487
+ 0x13, 0x08, 0x03, 0x07, 0x1d])
1488
+
1489
+ Fides_5 = SBox([
1490
+ 0x01,0x00,0x19,0x1a,0x11,0x1d,0x15,0x1b,0x14,0x05,0x04,0x17,0x0e,0x12,0x02,0x1c,
1491
+ 0x0f,0x08,0x06,0x03,0x0d,0x07,0x18,0x10,0x1e,0x09,0x1f,0x0a,0x16,0x0c,0x0b,0x13])
1492
+
1493
+ SC2000_5 = SBox([
1494
+ 20,26,7,31,19,12,10,15,22,30,13,14,4,24,9,
1495
+ 18,27,11,1,21,6,16,2,28,23,5,8,3,0,17,29,25])
1496
+
1497
+ Shamash = SBox([16, 14, 13, 2, 11, 17, 21, 30, 7, 24, 18, 28, 26, 1, 12, 6,
1498
+ 31, 25, 0, 23, 20, 22, 8, 27, 4, 3, 19, 5, 9, 10, 29, 15])
1499
+
1500
+ SYCON = SBox([8, 19, 30, 7, 6, 25, 16, 13, 22, 15, 3, 24, 17, 12, 4, 27, 11, 0,
1501
+ 29, 20, 1, 14, 23, 26, 28, 21, 9, 2, 31, 18, 10, 5])
1502
+
1503
+ # Bijective S-Boxes mapping 4 bits to 4
1504
+ # =====================================
1505
+
1506
+ Elephant = SBox([0xE, 0xD, 0xB, 0x0, 0x2, 0x1, 0x4, 0xF, 0x7, 0xA, 0x8, 0x5,
1507
+ 0x9, 0xC, 0x3, 0x6])
1508
+ KNOT = SBox([0x4, 0x0, 0xA, 0x7, 0xB, 0xE, 0x1, 0xD, 0x9, 0xF, 0x6, 0x8,
1509
+ 0x5, 0x2, 0xC, 0x3])
1510
+ Pyjamask_4 = SBox([0x2, 0xd, 0x3, 0x9, 0x7, 0xb, 0xa, 0x6, 0xe, 0x0, 0xf, 0x4,
1511
+ 0x8, 0x5, 0x1, 0xc])
1512
+ SATURNIN_0 = SBox([0x0, 0x6, 0xE, 0x1, 0xF, 0x4, 0x7, 0xD, 0x9, 0x8, 0xC, 0x5,
1513
+ 0x2, 0xA, 0x3, 0xB])
1514
+ SATURNIN_1 = SBox([0x0, 0x9, 0xD, 0x2, 0xF, 0x1, 0xB, 0x7, 0x6, 0x4, 0x5, 0x3,
1515
+ 0x8, 0xC, 0xA, 0xE])
1516
+ Spook = SBox([0x0, 0x8, 0x1, 0xF, 0x2, 0xA, 0x7, 0x9, 0x4, 0xD, 0x5, 0x6, 0xE,
1517
+ 0x3, 0xB, 0xC])
1518
+ Clyde = Spook
1519
+ Shadow = Spook
1520
+ TRIFLE = SBox([0x0, 0xC, 0x9, 0x7, 0x3, 0x5, 0xE, 0x4, 0x6, 0xB, 0xA, 0x2,
1521
+ 0xD, 0x1, 0x8, 0xF])
1522
+ Yarara = SBox([0x4, 0x7, 0x1, 0xC, 0x2, 0x8, 0xF, 0x3, 0xD, 0xA, 0xe, 0x9, 0xB,
1523
+ 0x6, 0x5, 0x0])
1524
+ Coral = Yarara
1525
+
1526
+ # DES
1527
+
1528
+ DES_S1_1 = SBox([14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7])
1529
+ DES_S1_2 = SBox([0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8])
1530
+ DES_S1_3 = SBox([4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0])
1531
+ DES_S1_4 = SBox([15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13])
1532
+
1533
+ DES_S2_1 = SBox([15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10])
1534
+ DES_S2_2 = SBox([3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5])
1535
+ DES_S2_3 = SBox([0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15])
1536
+ DES_S2_4 = SBox([13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9])
1537
+
1538
+ DES_S3_1 = SBox([10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8])
1539
+ DES_S3_2 = SBox([13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1])
1540
+ DES_S3_3 = SBox([13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7])
1541
+ DES_S3_4 = SBox([1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12])
1542
+
1543
+ DES_S4_1 = SBox([7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15])
1544
+ DES_S4_2 = SBox([13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9])
1545
+ DES_S4_3 = SBox([10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4])
1546
+ DES_S4_4 = SBox([3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14])
1547
+
1548
+ DES_S5_1 = SBox([2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9])
1549
+ DES_S5_2 = SBox([14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6])
1550
+ DES_S5_3 = SBox([4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14])
1551
+ DES_S5_4 = SBox([11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3])
1552
+
1553
+ DES_S6_1 = SBox([12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11])
1554
+ DES_S6_2 = SBox([10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8])
1555
+ DES_S6_3 = SBox([9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6])
1556
+ DES_S6_4 = SBox([4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13])
1557
+
1558
+ DES_S7_1 = SBox([4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1])
1559
+ DES_S7_2 = SBox([13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6])
1560
+ DES_S7_3 = SBox([1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2])
1561
+ DES_S7_4 = SBox([6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12])
1562
+
1563
+ DES_S8_1 = SBox([13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7])
1564
+ DES_S8_2 = SBox([1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2])
1565
+ DES_S8_3 = SBox([7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8])
1566
+ DES_S8_4 = SBox([2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11])
1567
+
1568
+ # source: http://www.quadibloc.com/crypto/co0401.htm
1569
+ Lucifer_S0 = SBox([12,15,7,10,14,13,11,0,2,6,3,1,9,4,5,8])
1570
+ Lucifer_S1 = SBox([7,2,14,9,3,11,0,4,12,13,1,10,6,15,8,5])
1571
+
1572
+ # First GOST block cipher and its modification.
1573
+ # ref: https://en.wikipedia.org/wiki/GOST_28147-89
1574
+ GOST_1 = SBox([0x4,0xa,0x9,0x2,0xd,0x8,0x0,0xe,0x6,0xb,0x1,0xc,0x7,0xf,0x5,0x3])
1575
+ GOST_2 = SBox([0xe,0xb,0x4,0xc,0x6,0xd,0xf,0xa,0x2,0x3,0x8,0x1,0x0,0x7,0x5,0x9])
1576
+ GOST_3 = SBox([0x5,0x8,0x1,0xd,0xa,0x3,0x4,0x2,0xe,0xf,0xc,0x7,0x6,0x0,0x9,0xb])
1577
+ GOST_4 = SBox([0x7,0xd,0xa,0x1,0x0,0x8,0x9,0xf,0xe,0x4,0x6,0xc,0xb,0x2,0x5,0x3])
1578
+ GOST_5 = SBox([0x6,0xc,0x7,0x1,0x5,0xf,0xd,0x8,0x4,0xa,0x9,0xe,0x0,0x3,0xb,0x2])
1579
+ GOST_6 = SBox([0x4,0xb,0xa,0x0,0x7,0x2,0x1,0xd,0x3,0x6,0x8,0x5,0x9,0xc,0xf,0xe])
1580
+ GOST_7 = SBox([0xd,0xb,0x4,0x1,0x3,0xf,0x5,0x9,0x0,0xa,0xe,0x7,0x6,0x8,0x2,0xc])
1581
+ GOST_8 = SBox([0x1,0xf,0xd,0x0,0x5,0x7,0xa,0x4,0x9,0x2,0x3,0xe,0x6,0xb,0x8,0xc])
1582
+
1583
+ # ref: https://eprint.iacr.org/2015/065.pdf
1584
+ GOST2_1 = SBox([0x6,0xA,0xF,0x4,0x3,0x8,0x5,0x0,0xD,0xE,0x7,0x1,0x2,0xB,0xC,0x9])
1585
+ GOST2_2 = SBox([0xE,0x0,0x8,0x1,0x7,0xA,0x5,0x6,0xD,0x2,0x4,0x9,0x3,0xF,0xC,0xB])
1586
+
1587
+ Magma_1 = SBox([0xC,0x4,0x6,0x2,0xA,0x5,0xB,0x9,0xE,0x8,0xD,0x7,0x0,0x3,0xF,0x1])
1588
+ Magma_2 = SBox([0x6,0x8,0x2,0x3,0x9,0xA,0x5,0xC,0x1,0xE,0x4,0x7,0xB,0xD,0x0,0xF])
1589
+ Magma_3 = SBox([0xB,0x3,0x5,0x8,0x2,0xF,0xA,0xD,0xE,0x1,0x7,0x4,0xC,0x9,0x6,0x0])
1590
+ Magma_4 = SBox([0xC,0x8,0x2,0x1,0xD,0x4,0xF,0x6,0x7,0x0,0xA,0x5,0x3,0xE,0x9,0xB])
1591
+ Magma_5 = SBox([0x7,0xF,0x5,0xA,0x8,0x1,0x6,0xD,0x0,0x9,0x3,0xE,0xB,0x4,0x2,0xC])
1592
+ Magma_6 = SBox([0x5,0xD,0xF,0x6,0x9,0x2,0xC,0xA,0xB,0x7,0x8,0x1,0x4,0x3,0xE,0x0])
1593
+ Magma_7 = SBox([0x8,0xE,0x2,0x5,0x6,0x9,0x1,0xC,0xF,0x4,0xB,0x0,0xD,0xA,0x3,0x7])
1594
+ Magma_8 = SBox([0x1,0x7,0xE,0xD,0x0,0x5,0x8,0x3,0x4,0xF,0xA,0x6,0x9,0xC,0xB,0x2])
1595
+
1596
+ GOST_IETF_1 = SBox([0x9,0x6,0x3,0x2,0x8,0xb,0x1,0x7,0xa,0x4,0xe,0xf,0xc,0x0,0xd,0x5])
1597
+ GOST_IETF_2 = SBox([0x3,0x7,0xe,0x9,0x8,0xa,0xf,0x0,0x5,0x2,0x6,0xc,0xb,0x4,0xd,0x1])
1598
+ GOST_IETF_3 = SBox([0xe,0x4,0x6,0x2,0xb,0x3,0xd,0x8,0xc,0xf,0x5,0xa,0x0,0x7,0x1,0x9])
1599
+ GOST_IETF_4 = SBox([0xe,0x7,0xa,0xc,0xd,0x1,0x3,0x9,0x0,0x2,0xb,0x4,0xf,0x8,0x5,0x6])
1600
+ GOST_IETF_5 = SBox([0xb,0x5,0x1,0x9,0x8,0xd,0xf,0x0,0xe,0x4,0x2,0x3,0xc,0x7,0xa,0x6])
1601
+ GOST_IETF_6 = SBox([0x3,0xa,0xd,0xc,0x1,0x2,0x0,0xb,0x7,0x5,0x9,0x4,0x8,0xf,0xe,0x6])
1602
+ GOST_IETF_7 = SBox([0x1,0xd,0x2,0x9,0x7,0xa,0x6,0x0,0x8,0xc,0x4,0x5,0xf,0x3,0xb,0xe])
1603
+ GOST_IETF_8 = SBox([0xb,0xa,0xf,0x5,0x0,0xc,0xe,0x8,0x6,0x2,0x3,0x9,0x1,0x7,0xd,0x4])
1604
+
1605
+ # Hummingbird-2
1606
+ Hummingbird_2_S1 = SBox([7,12,14,9,2,1,5,15,11,6,13,0,4,8,10,3])
1607
+ Hummingbird_2_S2 = SBox([4,10,1,6,8,15,7,12,3,0,14,13,5,9,11,2])
1608
+ Hummingbird_2_S3 = SBox([2,15,12,1,5,6,10,13,14,8,3,4,0,11,9,7])
1609
+ Hummingbird_2_S4 = SBox([15,4,5,8,9,7,2,1,10,3,0,14,6,12,13,11])
1610
+
1611
+ # LBlock
1612
+ LBlock_0 = SBox([14, 9, 15, 0, 13, 4, 10, 11, 1, 2, 8, 3, 7, 6, 12, 5])
1613
+ LBlock_1 = SBox([4, 11, 14, 9, 15, 13, 0, 10, 7, 12, 5, 6, 2, 8, 1, 3])
1614
+ LBlock_2 = SBox([1, 14, 7, 12, 15, 13, 0, 6, 11, 5, 9, 3, 2, 4, 8, 10])
1615
+ LBlock_3 = SBox([7, 6, 8, 11, 0, 15, 3, 14, 9, 10, 12, 13, 5, 2, 4, 1])
1616
+ LBlock_4 = SBox([14, 5, 15, 0, 7, 2, 12, 13, 1, 8, 4, 9, 11, 10, 6, 3])
1617
+ LBlock_5 = SBox([2, 13, 11, 12, 15, 14, 0, 9, 7, 10, 6, 3, 1, 8, 4, 5])
1618
+ LBlock_6 = SBox([11, 9, 4, 14, 0, 15, 10, 13, 6, 12, 5, 7, 3, 8, 1, 2])
1619
+ LBlock_7 = SBox([13, 10, 15, 0, 14, 4, 9, 11, 2, 1, 8, 3, 7, 5, 12, 6])
1620
+ LBlock_8 = SBox([8, 7, 14, 5, 15, 13, 0, 6, 11, 12, 9, 10, 2, 4, 1, 3])
1621
+ LBlock_9 = SBox([11, 5, 15, 0, 7, 2, 9, 13, 4, 8, 1, 12, 14, 10, 3, 6])
1622
+
1623
+ # SERPENT
1624
+ SERPENT_S0 = SBox([3,8,15,1,10,6,5,11,14,13,4,2,7,0,9,12])
1625
+ SERPENT_S1 = SBox([15,12,2,7,9,0,5,10,1,11,14,8,6,13,3,4])
1626
+ SERPENT_S2 = SBox([8,6,7,9,3,12,10,15,13,1,14,4,0,11,5,2])
1627
+ SERPENT_S3 = SBox([0,15,11,8,12,9,6,3,13,1,2,4,10,7,5,14])
1628
+ SERPENT_S4 = SBox([1,15,8,3,12,0,11,6,2,5,4,10,9,14,7,13])
1629
+ SERPENT_S5 = SBox([15,5,2,11,4,10,9,12,0,3,14,8,13,6,7,1])
1630
+ SERPENT_S6 = SBox([7,2,12,5,8,4,6,11,14,9,1,15,13,3,10,0])
1631
+ SERPENT_S7 = SBox([1,13,15,0,14,8,2,11,7,4,12,10,9,3,5,6])
1632
+
1633
+ # Other Block ciphers
1634
+ KLEIN = SBox([0x7,0x4,0xA,0x9,0x1,0xF,0xB,0x0,0xC,0x3,0x2,0x6,0x8,0xE,0xD,0x5])
1635
+ MIBS = SBox([4,15,3,8,13,10,12,0,11,5,7,14,2,6,1,9])
1636
+ Midori_Sb0 = SBox([0xc,0xa,0xd,0x3,0xe,0xb,0xf,0x7,0x8,0x9,0x1,0x5,0x0,0x2,0x4,0x6])
1637
+ MANTIS = Midori_Sb0
1638
+ WARP = Midori_Sb0
1639
+ CRAFT = Midori_Sb0
1640
+ Midori_Sb1 = SBox([0x1,0x0,0x5,0x3,0xe,0x2,0xf,0x7,0xd,0xa,0x9,0xb,0xc,0x8,0x4,0x6])
1641
+ Noekeon = SBox([0x7,0xA,0x2,0xC,0x4,0x8,0xF,0x0,0x5,0x9,0x1,0xE,0x3,0xD,0xB,0x6])
1642
+ Piccolo = SBox([0xe,0x4,0xb,0x2,0x3,0x8,0x0,0x9,0x1,0xa,0x7,0xf,0x6,0xc,0x5,0xd])
1643
+ Panda = SBox([0x0,0x1,0x3,0x2,0xf,0xc,0x9,0xb,0xa,0x6,0x8,0x7,0x5,0xe,0xd,0x4])
1644
+ PRESENT = SBox([0xC,0x5,0x6,0xB,0x9,0x0,0xA,0xD,0x3,0xE,0xF,0x8,0x4,0x7,0x1,0x2])
1645
+ CiliPadi = PRESENT
1646
+ PHOTON = PRESENT
1647
+ ORANGE = PHOTON
1648
+ GIFT = SBox([0x1,0xa,0x4,0xc,0x6,0xf,0x3,0x9,0x2,0xd,0xb,0x7,0x5,0x0,0x8,0xe])
1649
+ HYENA = GIFT
1650
+ Fountain_1 = GIFT
1651
+ TGIF = GIFT
1652
+ Fountain_2 = SBox([0x9, 0x5, 0x6, 0xD, 0x8, 0xA, 0x7, 0x2, 0xE, 0x4, 0xC,
1653
+ 0x1, 0xF, 0x0, 0xB, 0x3])
1654
+ Fountain_3 = SBox([0x9, 0xD, 0xE, 0x5, 0x8, 0xA, 0xF, 0x2, 0x6, 0xC, 0x4,
1655
+ 0x1, 0x7, 0x0, 0xB, 0x3])
1656
+ Fountain_4 = SBox([0xB, 0xF, 0xE, 0x8, 0x7, 0xA, 0x2, 0xD, 0x9, 0x3, 0x4,
1657
+ 0xC, 0x5, 0x0, 0x6, 0x1])
1658
+ Pride = SBox([0x0,0x4,0x8,0xf,0x1,0x5,0xe,0x9,0x2,0x7,0xa,0xc,0xb,0xd,0x6,0x3])
1659
+ PRINCE = SBox([0xB,0xF,0x3,0x2,0xA,0xC,0x9,0x1,0x6,0x7,0x8,0x0,0xE,0x5,0xD,0x4])
1660
+ Prost = Pride
1661
+ Qarma_sigma0 = SBox([0, 14, 2, 10, 9, 15, 8, 11, 6, 4, 3, 7, 13, 12, 1, 5])
1662
+ Qarma_sigma1 = SBox([10, 13, 14, 6, 15, 7, 3, 5, 9, 8, 0, 12, 11, 1, 2, 4])
1663
+ Qameleon = Qarma_sigma1
1664
+ Qarma_sigma2 = SBox([11, 6, 8, 15, 12, 0, 9, 14, 3, 7, 4, 5, 13, 2, 1, 10])
1665
+ REC_0 = SBox([0x9,0x4,0xF,0xA,0xE,0x1,0x0,0x6,0xC,0x7,0x3,0x8,0x2,0xB,0x5,0xD])
1666
+ Rectangle = SBox([0x6,0x5,0xC,0xA,0x1,0xE,0x7,0x9,0xB,0x0,0x3,0xD,0x8,0xF,0x4,0x2])
1667
+ SC2000_4 = SBox([2,5,10,12,7,15,1,11,13,6,0,9,4,8,3,14])
1668
+ SKINNY_4 = SBox([0xc,0x6,0x9,0x0,0x1,0xa,0x2,0xb,0x3,0x8,0x5,0xd,0x4,0xe,0x7,0xf])
1669
+ ForkSkinny_4 = SKINNY_4
1670
+ Remus_4 = SKINNY_4
1671
+
1672
+ TWINE = SBox([0xC,0x0,0xF,0xA,0x2,0xB,0x9,0x5,0x8,0x3,0xD,0x7,0x1,0xE,0x6,0x4])
1673
+
1674
+ # Sub-components of hash functions
1675
+ Luffa_v1 = SBox([0x7,0xd,0xb,0xa,0xc,0x4,0x8,0x3,0x5,0xf,0x6,0x0,0x9,0x1,0x2,0xe])
1676
+ Luffa = SBox([0xd,0xe,0x0,0x1,0x5,0xa,0x7,0x6,0xb,0x3,0x9,0xc,0xf,0x8,0x2,0x4])
1677
+ BLAKE_1 = SBox([14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3])
1678
+ BLAKE_2 = SBox([11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4])
1679
+ BLAKE_3 = SBox([7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8])
1680
+ BLAKE_4 = SBox([9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13])
1681
+ BLAKE_5 = SBox([2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9])
1682
+ BLAKE_6 = SBox([12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11])
1683
+ BLAKE_7 = SBox([13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10])
1684
+ BLAKE_8 = SBox([6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5])
1685
+ BLAKE_9 = SBox([10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0])
1686
+ JH_S0 = SBox([9,0,4,11,13,12,3,15,1,10,2,6,7,5,8,14])
1687
+ JH_S1 = SBox([3,12,6,13,5,7,1,9,15,2,0,4,11,10,14,8])
1688
+ SMASH_256_S1 = SBox([6,13,12,7,15,1,3,10,8,11,5,0,2,4,14,9])
1689
+ SMASH_256_S2 = SBox([1,11,6,0,14,13,5,10,12,2,9,7,3,8,15,4])
1690
+ SMASH_256_S3 = SBox([4,2,9,12,8,1,14,7,15,5,0,11,6,10,3,13])
1691
+
1692
+ # Sub-components of larger S-Boxes
1693
+ Anubis_S0 = SBox([0xd,0x7,0x3,0x2,0x9,0xa,0xc,0x1,0xf,0x4,0x5,0xe,0x6,0x0,0xb,0x8])
1694
+ Anubis_S1 = SBox([0x4,0xa,0xf,0xc,0x0,0xd,0x9,0xb,0xe,0x6,0x1,0x7,0x3,0x5,0x8,0x2])
1695
+ CLEFIA_SS0 = SBox([0xe,0x6,0xc,0xa,0x8,0x7,0x2,0xf,0xb,0x1,0x4,0x0,0x5,0x9,0xd,0x3])
1696
+ CLEFIA_SS1 = SBox([0x6,0x4,0x0,0xd,0x2,0xb,0xa,0x3,0x9,0xc,0xe,0xf,0x8,0x7,0x5,0x1])
1697
+ CLEFIA_SS2 = SBox([0xb,0x8,0x5,0xe,0xa,0x6,0x4,0xc,0xf,0x7,0x2,0x3,0x1,0x0,0xd,0x9])
1698
+ CLEFIA_SS3 = SBox([0xa,0x2,0x6,0xd,0x3,0x4,0x5,0xe,0x0,0x7,0x8,0x9,0xb,0xf,0xc,0x1])
1699
+ Enocoro_S4 = SBox([1,3,9,10,5,14,7,2,13,0,12,15,4,8,6,11])
1700
+ Iceberg_S0 = Anubis_S0
1701
+ Iceberg_S1 = Anubis_S1
1702
+ Khazad_P = SBox([0x3,0xF,0xE,0x0,0x5,0x4,0xB,0xC,0xD,0xA,0x9,0x6,0x7,0x8,0x2,0x1])
1703
+ Khazad_Q = SBox([0x9,0xE,0x5,0x6,0xA,0x2,0x3,0xC,0xF,0x0,0x4,0xD,0x7,0xB,0x1,0x8])
1704
+ Whirlpool_E = SBox([0x1,0xB,0x9,0xC,0xD,0x6,0xF,0x3,0xE,0x8,0x7,0x4,0xA,0x2,0x5,0x0])
1705
+ Whirlpool_R = SBox([0x7,0xC,0xB,0xD,0xE,0x4,0x9,0xF,0x6,0x3,0x8,0xA,0x2,0x5,0x1,0x0])
1706
+ CS_cipher_F = SBox([0xf,0xd,0xb,0xb,0x7,0x5,0x7,0x7,0xe,0xd,0xa,0xb,0xe,0xd,0xe,0xf])
1707
+ CS_cipher_G = SBox([0xa,0x6,0x0,0x2,0xb,0xe,0x1,0x8,0xd,0x4,0x5,0x3,0xf,0xc,0x7,0x9])
1708
+ Fox_S1 = SBox([0x2,0x5,0x1,0x9,0xE,0xA,0xC,0x8,0x6,0x4,0x7,0xF,0xD,0xB,0x0,0x3])
1709
+ Fox_S2 = SBox([0xB,0x4,0x1,0xF,0x0,0x3,0xE,0xD,0xA,0x8,0x7,0x5,0xC,0x2,0x9,0x6])
1710
+ Fox_S3 = SBox([0xD,0xA,0xB,0x1,0x4,0x3,0x8,0x9,0x5,0x7,0x2,0xC,0xF,0x0,0x6,0xE])
1711
+ Twofish_Q0_T0 = SBox([0x8,0x1,0x7,0xD,0x6,0xF,0x3,0x2,0x0,0xB,0x5,0x9,0xE,0xC,0xA,0x4])
1712
+ Twofish_Q0_T1 = SBox([0xE,0xC,0xB,0x8,0x1,0x2,0x3,0x5,0xF,0x4,0xA,0x6,0x7,0x0,0x9,0xD])
1713
+ Twofish_Q0_T2 = SBox([0xB,0xA,0x5,0xE,0x6,0xD,0x9,0x0,0xC,0x8,0xF,0x3,0x2,0x4,0x7,0x1])
1714
+ Twofish_Q0_T3 = SBox([0xD,0x7,0xF,0x4,0x1,0x2,0x6,0xE,0x9,0xB,0x3,0x0,0x8,0x5,0xC,0xA])
1715
+ Twofish_Q1_T0 = SBox([0x2,0x8,0xB,0xD,0xF,0x7,0x6,0xE,0x3,0x1,0x9,0x4,0x0,0xA,0xC,0x5])
1716
+ Twofish_Q1_T1 = SBox([0x1,0xE,0x2,0xB,0x4,0xC,0x3,0x7,0x6,0xD,0xA,0x5,0xF,0x9,0x0,0x8])
1717
+ Twofish_Q1_T2 = SBox([0x4,0xC,0x7,0x5,0x1,0x6,0x9,0xA,0x0,0xE,0xD,0x8,0x2,0xB,0x3,0xF])
1718
+ Twofish_Q1_T3 = SBox([0xB,0x9,0x5,0x1,0xC,0x3,0xD,0xE,0x6,0x4,0x7,0xF,0x2,0x0,0x8,0xA])
1719
+ Kuznyechik_nu0 = SBox([0x2,0x5,0x3,0xb,0x6,0x9,0xe,0xa,0x0,0x4,0xf,0x1,0x8,0xd,0xc,0x7])
1720
+ Kuznyechik_nu1 = SBox([0x7,0x6,0xc,0x9,0x0,0xf,0x8,0x1,0x4,0x5,0xb,0xe,0xd,0x2,0x3,0xa])
1721
+ Kuznyechik_sigma = SBox([0xc,0xd,0x0,0x4,0x8,0xb,0xa,0xe,0x3,0x9,0x5,0x2,0xf,0x1,0x6,0x7])
1722
+ Kuznyechik_phi = SBox([0xb,0x2,0xb,0x8,0xc,0x4,0x1,0xc,0x6,0x3,0x5,0x8,0xe,0x3,0x6,0xb])
1723
+ Optimal_S0 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 11, 12, 9, 3, 14, 10, 5])
1724
+ Optimal_S1 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 11, 14, 3, 5, 9, 10, 12])
1725
+ Optimal_S2 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 11, 14, 3, 10, 12, 5, 9])
1726
+ Optimal_S3 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 12, 5, 3, 10, 14, 11, 9])
1727
+ Optimal_S4 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 12, 9, 11, 10, 14, 5, 3])
1728
+ Optimal_S5 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 12, 11, 9, 10, 14, 3, 5])
1729
+ Optimal_S6 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 12, 11, 9, 10, 14, 5, 3])
1730
+ Optimal_S7 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 12, 14, 11, 10, 9, 3, 5])
1731
+ Optimal_S8 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 9, 5, 10, 11, 3, 12])
1732
+ Optimal_S9 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 11, 3, 5, 9, 10, 12])
1733
+ Optimal_S10 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 11, 5, 10, 9, 3, 12])
1734
+ Optimal_S11 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 11, 10, 5, 9, 12, 3])
1735
+ Optimal_S12 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 11, 10, 9, 3, 12, 5])
1736
+ Optimal_S13 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 12, 9, 5, 11, 10, 3])
1737
+ Optimal_S14 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 12, 11, 3, 9, 5, 10])
1738
+ Optimal_S15 = SBox([0, 1, 2, 13, 4, 7, 15, 6, 8, 14, 12, 11, 9, 3, 10, 5])
1739
+ Serpent_type_S0 = SBox([0, 3, 5, 6, 7, 10, 11, 12, 13, 4, 14, 9, 8, 1, 2, 15])
1740
+ Serpent_type_S1 = SBox([0, 3, 5, 8, 6, 9, 10, 7, 11, 12, 14, 2, 1, 15, 13, 4])
1741
+ Serpent_type_S2 = SBox([0, 3, 5, 8, 6, 9, 11, 2, 13, 4, 14, 1, 10, 15, 7, 12])
1742
+ Serpent_type_S3 = SBox([0, 3, 5, 8, 6, 10, 15, 4, 14, 13, 9, 2, 1, 7, 12, 11])
1743
+ Serpent_type_S4 = SBox([0, 3, 5, 8, 6, 12, 11, 7, 9, 14, 10, 13, 15, 2, 1, 4])
1744
+ Serpent_type_S5 = SBox([0, 3, 5, 8, 6, 12, 11, 7, 10, 4, 9, 14, 15, 1, 2, 13])
1745
+ Serpent_type_S6 = SBox([0, 3, 5, 8, 6, 12, 11, 7, 10, 13, 9, 14, 15, 1, 2, 4])
1746
+ Serpent_type_S7 = SBox([0, 3, 5, 8, 6, 12, 11, 7, 13, 10, 14, 4, 1, 15, 2, 9])
1747
+ Serpent_type_S8 = SBox([0, 3, 5, 8, 6, 12, 15, 1, 10, 4, 9, 14, 13, 11, 2, 7])
1748
+ Serpent_type_S9 = SBox([0, 3, 5, 8, 6, 12, 15, 2, 14, 9, 11, 7, 13, 10, 4, 1])
1749
+ Serpent_type_S10 = SBox([0, 3, 5, 8, 6, 13, 15, 1, 9, 12, 2, 11, 10, 7, 4, 14])
1750
+ Serpent_type_S11 = SBox([0, 3, 5, 8, 6, 13, 15, 2, 7, 4, 14, 11, 10, 1, 9, 12])
1751
+ Serpent_type_S12 = SBox([0, 3, 5, 8, 6, 13, 15, 2, 12, 9, 10, 4, 11, 14, 1, 7])
1752
+ Serpent_type_S13 = SBox([0, 3, 5, 8, 6, 15, 10, 1, 7, 9, 14, 4, 11, 12, 13, 2])
1753
+ Serpent_type_S14 = SBox([0, 3, 5, 8, 7, 4, 9, 14, 15, 6, 2, 11, 10, 13, 12, 1])
1754
+ Serpent_type_S15 = SBox([0, 3, 5, 8, 7, 9, 11, 14, 10, 13, 15, 4, 12, 2, 6, 1])
1755
+ Serpent_type_S16 = SBox([0, 3, 5, 8, 9, 12, 14, 7, 10, 13, 15, 4, 6, 11, 1, 2])
1756
+ Serpent_type_S17 = SBox([0, 3, 5, 8, 10, 13, 9, 4, 15, 6, 2, 1, 12, 11, 7, 14])
1757
+ Serpent_type_S18 = SBox([0, 3, 5, 8, 11, 12, 6, 15, 14, 9, 2, 7, 4, 10, 13, 1])
1758
+ Serpent_type_S19 = SBox([0, 3, 5, 10, 7, 12, 11, 6, 13, 4, 2, 9, 14, 1, 8, 15])
1759
+ Golden_S0 = SBox([0, 3, 5, 8, 6, 9, 12, 7, 13, 10, 14, 4, 1, 15, 11, 2])
1760
+ Golden_S1 = Serpent_type_S4
1761
+ Golden_S2 = Serpent_type_S3
1762
+ Golden_S3 = Serpent_type_S5
1763
+
1764
+ # S-Boxes from the literature on Boolean functions
1765
+
1766
+ # Ullrich, Markus, et al. "Finding optimal bitsliced implementations
1767
+ # of 4x4-bit S-boxes." SKEW 2011 Symmetric Key Encryption Workshop,
1768
+ # Copenhagen, Denmark. 2011.
1769
+ UDCIKMP11 = SBox([0x0,0x8,0x6,0xD,0x5,0xF,0x7,0xC,0x4,0xE,0x2,0x3,0x9,0x1,0xB,0xA])
1770
+
1771
+ # Bijective S-Boxes mapping 3 bits to 3
1772
+ # =====================================
1773
+
1774
+ SEA = SBox([0x0,0x5,0x6,0x7,0x4,0x3,0x1,0x2])
1775
+ PRINTcipher = SBox([0x0, 0x1, 0x3, 0x6, 0x7, 0x4, 0x5, 0x2])
1776
+ Pyjamask_3 = SBox([0x1, 0x3, 0x6, 0x5, 0x2, 0x4, 0x7, 0x0])
1777
+
1778
+ affine_equiv_classes = {}
1779
+ # affine equivalent classes for 4 bit
1780
+ affine_equiv_classes[4] = [
1781
+ SBox([0x4, 0x0, 0x1, 0xF, 0x2, 0xB, 0x6, 0x7, 0x3, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0x8]),
1782
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0x6, 0x9, 0x4, 0x3, 0xA, 0xB, 0x7, 0xD, 0xE, 0xF]),
1783
+ SBox([0x8, 0x0, 0x1, 0xC, 0xF, 0x5, 0x6, 0x7, 0x4, 0x3, 0xA, 0xB, 0x9, 0xD, 0xE, 0x2]),
1784
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xD, 0x6, 0x7, 0x4, 0x9, 0xA, 0x5, 0xC, 0xB, 0xE, 0xF]),
1785
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xF, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xA]),
1786
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xB, 0x6, 0x7, 0x4, 0x9, 0xA, 0xF, 0xC, 0xD, 0xE, 0x5]),
1787
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0xB, 0x6, 0x7, 0x0, 0x9, 0xA, 0xE, 0xC, 0xD, 0x5, 0xF]),
1788
+ SBox([0x8, 0x0, 0x1, 0x9, 0x2, 0x5, 0xD, 0x7, 0x4, 0x6, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1789
+ SBox([0x8, 0xE, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0xC, 0xA, 0xB, 0x9, 0xD, 0x0, 0xF]),
1790
+ SBox([0x8, 0xE, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xF, 0xB, 0xC, 0xD, 0x0, 0xA]),
1791
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0x5, 0xC, 0x7, 0x4, 0x9, 0xA, 0xB, 0x6, 0xD, 0xE, 0x0]),
1792
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0x5, 0x6, 0xD, 0x4, 0x9, 0xA, 0xB, 0xC, 0x7, 0xE, 0x0]),
1793
+ SBox([0xC, 0x0, 0x1, 0x9, 0x3, 0x5, 0x4, 0x7, 0x6, 0x2, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
1794
+ SBox([0xC, 0xB, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0x0, 0x8, 0xD, 0xE, 0xF]),
1795
+ SBox([0xC, 0x9, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x0, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
1796
+ SBox([0x8, 0xE, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0x0, 0xC, 0xD, 0xB, 0xF]),
1797
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0xB, 0x6, 0x7, 0x4, 0x9, 0x0, 0x5, 0xC, 0xD, 0xE, 0xF]),
1798
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xC, 0x3, 0x7, 0x6, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
1799
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x3, 0xB, 0x6, 0x9, 0xA, 0x7, 0xC, 0xD, 0xE, 0xF]),
1800
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x3, 0xE, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0x7, 0xF]),
1801
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0x4, 0xB, 0x0, 0x9, 0xA, 0x7, 0xC, 0xD, 0xE, 0xF]),
1802
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x9, 0x3, 0x7, 0x6, 0x5, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1803
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0x0, 0xB, 0xC, 0xD, 0xE, 0xA]),
1804
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0xF, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
1805
+ SBox([0xD, 0x0, 0x1, 0x2, 0x3, 0x5, 0xE, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x8, 0x4, 0xF]),
1806
+ SBox([0xC, 0xA, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0x0, 0xB, 0x8, 0xD, 0xE, 0xF]),
1807
+ SBox([0xC, 0x0, 0x1, 0x2, 0x3, 0x5, 0xF, 0x7, 0x6, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0x4]),
1808
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0x0, 0x4, 0x7, 0x6, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1809
+ SBox([0x8, 0xD, 0x1, 0x2, 0x3, 0x0, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x5, 0xE, 0xF]),
1810
+ SBox([0x6, 0x8, 0x1, 0xE, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x2, 0xF]),
1811
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0xA, 0x7, 0x6, 0x9, 0x3, 0xB, 0xC, 0xD, 0xE, 0xF]),
1812
+ SBox([0xC, 0x0, 0xA, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0x1, 0xB, 0x8, 0xD, 0xE, 0xF]),
1813
+ SBox([0xD, 0x0, 0xA, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0x1, 0xB, 0xC, 0x8, 0xE, 0xF]),
1814
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0x0]),
1815
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0xB, 0x7, 0x4, 0x9, 0xA, 0x6, 0x3, 0xD, 0xE, 0xF]),
1816
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0xD, 0x7, 0x4, 0x9, 0xA, 0xB, 0x3, 0x6, 0xE, 0xF]),
1817
+ SBox([0xC, 0x0, 0x1, 0x2, 0x3, 0xF, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0x5]),
1818
+ SBox([0xC, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0xD, 0x4, 0x9, 0xA, 0xB, 0x8, 0x7, 0xE, 0xF]),
1819
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0x5, 0x6, 0x9, 0x4, 0x7, 0x0, 0xB, 0xC, 0xD, 0xE, 0xF]),
1820
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0xE, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x3, 0xD, 0x5, 0xF]),
1821
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xD, 0x3, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x5, 0xE, 0xF]),
1822
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xA, 0x3, 0x7, 0x6, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1823
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0x4, 0xC, 0x0, 0x9, 0xA, 0xB, 0x7, 0xD, 0xE, 0xF]),
1824
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0x4, 0xD, 0x0, 0x9, 0xA, 0xB, 0xC, 0x7, 0xE, 0xF]),
1825
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0x4, 0x9, 0x0, 0x7, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1826
+ SBox([0xD, 0xA, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0x0, 0xB, 0xC, 0x8, 0xE, 0xF]),
1827
+ SBox([0xE, 0x0, 0x1, 0xA, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0x2, 0xB, 0xC, 0xD, 0x8, 0xF]),
1828
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0x5, 0x9, 0x7, 0x4, 0x6, 0x0, 0xB, 0xC, 0xD, 0xE, 0xF]),
1829
+ SBox([0x8, 0x0, 0x1, 0xD, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0x3, 0xB, 0xC, 0xA, 0xE, 0xF]),
1830
+ SBox([0x8, 0x0, 0x1, 0x6, 0x2, 0x5, 0xD, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1831
+ SBox([0x8, 0xC, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0x0, 0xD, 0xE, 0xF]),
1832
+ SBox([0x6, 0x8, 0xD, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0x1, 0xE, 0xF]),
1833
+ SBox([0x6, 0x8, 0xE, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x1, 0xF]),
1834
+ SBox([0x4, 0x0, 0x1, 0xF, 0x2, 0x5, 0x3, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
1835
+ SBox([0x4, 0x0, 0x1, 0xA, 0x2, 0x8, 0x6, 0x7, 0x3, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1836
+ SBox([0x4, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x8, 0x3, 0x9, 0x7, 0xB, 0xC, 0xD, 0xE, 0xF]),
1837
+ SBox([0x6, 0x0, 0x8, 0xF, 0x3, 0x5, 0x4, 0x7, 0x1, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x2]),
1838
+ SBox([0x6, 0x0, 0x8, 0xC, 0x3, 0x5, 0x4, 0x7, 0x1, 0x9, 0xA, 0xB, 0x2, 0xD, 0xE, 0xF]),
1839
+ SBox([0x6, 0x8, 0x1, 0xC, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0x2, 0xD, 0xE, 0xF]),
1840
+ SBox([0x6, 0x8, 0x1, 0xD, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0x2, 0xE, 0xF]),
1841
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0x6, 0x7, 0x4, 0x3, 0xA, 0xB, 0x9, 0xD, 0xE, 0xF]),
1842
+ SBox([0x8, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x3, 0x4, 0x9, 0x7, 0xB, 0xC, 0xD, 0xE, 0xF]),
1843
+ SBox([0x8, 0x0, 0x1, 0xD, 0x2, 0x5, 0x3, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x6, 0xE, 0xF]),
1844
+ SBox([0x8, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xD, 0xB, 0xC, 0x3, 0xE, 0xF]),
1845
+ SBox([0x8, 0x0, 0x1, 0xE, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0x2, 0xF]),
1846
+ SBox([0x6, 0x0, 0x1, 0x8, 0xD, 0x5, 0x4, 0x7, 0x2, 0x9, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1847
+ SBox([0x6, 0x8, 0x1, 0x2, 0xF, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
1848
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0xA, 0x4, 0x7, 0x0, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1849
+ SBox([0x8, 0x0, 0x1, 0x3, 0x2, 0xA, 0x6, 0x7, 0x4, 0x9, 0xF, 0xB, 0xC, 0xD, 0xE, 0x5]),
1850
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0xB, 0x7, 0x6, 0x9, 0xA, 0x3, 0xC, 0xD, 0xE, 0xF]),
1851
+ SBox([0x8, 0x0, 0x1, 0x6, 0x2, 0x5, 0xC, 0x7, 0x4, 0x9, 0xA, 0xB, 0x3, 0xD, 0xE, 0xF]),
1852
+ SBox([0x8, 0x0, 0x1, 0x7, 0x2, 0x5, 0x6, 0xC, 0x4, 0x9, 0xA, 0xB, 0x3, 0xD, 0xE, 0xF]),
1853
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x9, 0x7, 0x6, 0x3, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1854
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x9, 0x4, 0x7, 0x0, 0x5, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1855
+ SBox([0x6, 0x8, 0x1, 0x9, 0x3, 0x5, 0x4, 0x7, 0x0, 0x2, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1856
+ SBox([0x8, 0x0, 0x1, 0x9, 0x2, 0x5, 0x3, 0x7, 0x4, 0x6, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1857
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0x3, 0x7, 0x4, 0x9, 0xA, 0xB, 0x6, 0xD, 0xE, 0xF]),
1858
+ SBox([0x8, 0x0, 0x1, 0x3, 0x2, 0xF, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xA]),
1859
+ SBox([0x6, 0xD, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
1860
+ SBox([0x8, 0xB, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0x0, 0xC, 0xD, 0xE, 0xF]),
1861
+ SBox([0x8, 0xD, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x0, 0xE, 0xF]),
1862
+ SBox([0x6, 0x8, 0xF, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x1]),
1863
+ SBox([0x6, 0x8, 0xC, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0x1, 0xD, 0xE, 0xF]),
1864
+ SBox([0x8, 0x5, 0x1, 0x2, 0x3, 0x0, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1865
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0x0, 0xB, 0xC, 0xD, 0xE, 0xF]),
1866
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0xA, 0x7, 0x0, 0x9, 0x4, 0xB, 0xC, 0xD, 0xE, 0xF]),
1867
+ SBox([0x8, 0xA, 0x1, 0xC, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0x0, 0xB, 0x2, 0xD, 0xE, 0xF]),
1868
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0x6, 0x3, 0x4, 0x9, 0xA, 0xB, 0x7, 0xD, 0xE, 0xF]),
1869
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xB, 0x6, 0x7, 0x4, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1870
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0xB, 0x6, 0x7, 0x0, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1871
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x9, 0x0, 0x7, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1872
+ SBox([0x8, 0x6, 0x1, 0x2, 0x9, 0x5, 0x0, 0x7, 0x4, 0x3, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1873
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0xB, 0x4, 0x7, 0x0, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1874
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0xE, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x5, 0xF]),
1875
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0xF, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x5]),
1876
+ SBox([0xF, 0x0, 0x1, 0x3, 0x2, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0x8]),
1877
+ SBox([0x8, 0xD, 0x1, 0x2, 0x3, 0x5, 0x0, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x6, 0xE, 0xF]),
1878
+ SBox([0x4, 0x0, 0x1, 0xE, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0x8, 0xB, 0xC, 0xD, 0xA, 0xF]),
1879
+ SBox([0x8, 0x0, 0x1, 0xF, 0x2, 0x5, 0x3, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x6]),
1880
+ SBox([0x2, 0x0, 0x1, 0x3, 0xF, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0x8]),
1881
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1882
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xD, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x5, 0xE, 0xF]),
1883
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xB, 0x6, 0x7, 0x3, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1884
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xC, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
1885
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0x5, 0x6, 0x7, 0x4, 0xC, 0xA, 0xB, 0x9, 0xD, 0xE, 0xF]),
1886
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x0]),
1887
+ SBox([0x8, 0x0, 0x1, 0xD, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x2, 0xE, 0xF]),
1888
+ SBox([0x6, 0x8, 0x1, 0x2, 0xC, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0x3, 0xD, 0xE, 0xF]),
1889
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0xE, 0x6, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x5, 0xF]),
1890
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0xB, 0x6, 0x7, 0x4, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1891
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0xE, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x4, 0xF]),
1892
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0xD, 0x0, 0x9, 0xA, 0xB, 0xC, 0x7, 0xE, 0xF]),
1893
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0xF, 0xA, 0xB, 0xC, 0xD, 0xE, 0x9]),
1894
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xA, 0xE, 0xC, 0xD, 0xB, 0xF]),
1895
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x9, 0x4, 0x7, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1896
+ SBox([0xF, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0x3, 0xB, 0xC, 0xD, 0xE, 0x8]),
1897
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xF, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x5]),
1898
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0xF, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x6]),
1899
+ SBox([0x6, 0x8, 0x1, 0xB, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0x2, 0xC, 0xD, 0xE, 0xF]),
1900
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0xA, 0x6, 0x7, 0x0, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1901
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0xF, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x5]),
1902
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0xB, 0x7, 0x0, 0x9, 0xA, 0x6, 0xC, 0xD, 0xE, 0xF]),
1903
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0xD, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0x6, 0xE, 0xF]),
1904
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0xA, 0x0, 0x9, 0x7, 0xB, 0xC, 0xD, 0xE, 0xF]),
1905
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0xD, 0x4, 0x9, 0xA, 0xB, 0xC, 0x7, 0xE, 0xF]),
1906
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0xC, 0xA, 0xB, 0x9, 0xD, 0xE, 0xF]),
1907
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xF, 0xB, 0xC, 0xD, 0xE, 0xA]),
1908
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x9, 0x7, 0x0, 0x6, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1909
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xE, 0xC, 0xD, 0xB, 0xF]),
1910
+ SBox([0x4, 0x0, 0x1, 0xA, 0x2, 0x5, 0x3, 0x7, 0x6, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
1911
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0xA, 0x7, 0x0, 0x9, 0x6, 0xB, 0xC, 0xD, 0xE, 0xF]),
1912
+ SBox([0x8, 0x0, 0xB, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0x1, 0xC, 0xD, 0xE, 0xF]),
1913
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0xB, 0x7, 0x6, 0x9, 0xA, 0x4, 0xC, 0xD, 0xE, 0xF]),
1914
+ SBox([0x8, 0x0, 0xC, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0x1, 0xD, 0xE, 0xF]),
1915
+ SBox([0x8, 0x0, 0xD, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x1, 0xE, 0xF]),
1916
+ SBox([0x8, 0x0, 0x1, 0x2, 0xE, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0x3, 0xF]),
1917
+ SBox([0x8, 0x0, 0x1, 0x2, 0xF, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
1918
+ SBox([0x6, 0x0, 0x8, 0x2, 0x3, 0x5, 0xB, 0x7, 0x1, 0x9, 0xA, 0x4, 0xC, 0xD, 0xE, 0xF]),
1919
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0xC, 0x7, 0x4, 0x9, 0xA, 0xB, 0x6, 0xD, 0xE, 0xF]),
1920
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x9, 0x6, 0x7, 0x3, 0x5, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1921
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xF, 0xB, 0xC, 0xD, 0xE, 0xA]),
1922
+ SBox([0xC, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
1923
+ SBox([0xD, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
1924
+ SBox([0x8, 0xE, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0x0, 0xF]),
1925
+ SBox([0x8, 0x0, 0x1, 0xF, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0x3, 0xB, 0xC, 0xD, 0xE, 0xA]),
1926
+ SBox([0x8, 0x0, 0x1, 0xB, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0x2, 0xC, 0xD, 0xE, 0xF]),
1927
+ SBox([0x8, 0x0, 0x1, 0xC, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0x2, 0xD, 0xE, 0xF]),
1928
+ SBox([0x6, 0x8, 0x1, 0x2, 0xB, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0x3, 0xC, 0xD, 0xE, 0xF]),
1929
+ SBox([0x6, 0x8, 0x1, 0x2, 0xD, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1930
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0xF, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x4]),
1931
+ SBox([0x8, 0x0, 0x1, 0x6, 0x2, 0x5, 0xF, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
1932
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0x5, 0x6, 0xB, 0x1, 0x9, 0xA, 0x7, 0xC, 0xD, 0xE, 0xF]),
1933
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xA, 0xB, 0xE, 0xD, 0xC, 0xF]),
1934
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xF, 0xE, 0xD]),
1935
+ SBox([0x8, 0x0, 0xF, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x1]),
1936
+ SBox([0x8, 0x0, 0x1, 0x9, 0x2, 0x5, 0x6, 0x7, 0x4, 0xF, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
1937
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xD, 0xB, 0xC, 0xA, 0xE, 0xF]),
1938
+ SBox([0xB, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xD, 0xC, 0x8, 0xE, 0xF]),
1939
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
1940
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0xA, 0x6, 0x7, 0x3, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1941
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0x5, 0x6, 0x7, 0x4, 0xD, 0xA, 0xB, 0xC, 0x9, 0xE, 0xF]),
1942
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x9, 0x7, 0x3, 0x6, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1943
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0xB, 0x6, 0x7, 0x1, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
1944
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0xE, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0x5, 0xF]),
1945
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0x6, 0xE, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0x7, 0xF]),
1946
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0xC, 0x4, 0x9, 0xA, 0xB, 0x7, 0xD, 0xE, 0xF]),
1947
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0xC, 0xA, 0xB, 0x9, 0xD, 0xE, 0xF]),
1948
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0xD, 0xA, 0xB, 0xC, 0x9, 0xE, 0xF]),
1949
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xE, 0xC, 0xD, 0xB, 0xF]),
1950
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xF, 0xC, 0xD, 0xE, 0xB]),
1951
+ SBox([0x4, 0x0, 0x1, 0xF, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
1952
+ SBox([0x8, 0xE, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0x0, 0xF]),
1953
+ SBox([0x8, 0xF, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x0]),
1954
+ SBox([0x4, 0x0, 0x1, 0xD, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
1955
+ SBox([0x8, 0x0, 0x1, 0xD, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x2, 0xE, 0xF]),
1956
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
1957
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0xE, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0x7, 0xF]),
1958
+ SBox([0x4, 0x8, 0xE, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0x1, 0xF]),
1959
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1960
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0x5, 0xB, 0x7, 0x1, 0x9, 0xA, 0x6, 0xC, 0xD, 0xE, 0xF]),
1961
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x9, 0x7, 0x4, 0x6, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1962
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0xB, 0x7, 0x4, 0x9, 0xA, 0x6, 0xC, 0xD, 0xE, 0xF]),
1963
+ SBox([0x8, 0x6, 0x1, 0xD, 0x3, 0x5, 0x0, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x2, 0xE, 0xF]),
1964
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0xD, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0x6, 0xE, 0xF]),
1965
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0xA, 0x7, 0x3, 0x9, 0x6, 0xB, 0xC, 0xD, 0xE, 0xF]),
1966
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0xD, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x6, 0xE, 0xF]),
1967
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xE, 0xD, 0xC, 0xF]),
1968
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xE, 0xB, 0xC, 0xD, 0xA, 0xF]),
1969
+ SBox([0x8, 0xA, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0x0, 0xB, 0xC, 0xD, 0xE, 0xF]),
1970
+ SBox([0x4, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
1971
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x3, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1972
+ SBox([0x6, 0x0, 0x1, 0x8, 0x3, 0x5, 0x4, 0x7, 0x2, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1973
+ SBox([0x6, 0x8, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1974
+ SBox([0x2, 0x0, 0x1, 0x3, 0xF, 0xB, 0x6, 0x7, 0x4, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0x8]),
1975
+ SBox([0x1, 0x0, 0x4, 0x8, 0x2, 0x5, 0xF, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x6]),
1976
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0xE, 0xA, 0xB, 0xC, 0xD, 0x9, 0xF]),
1977
+ SBox([0x8, 0x0, 0x1, 0x3, 0x2, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1978
+ SBox([0x8, 0x0, 0x1, 0xC, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x3, 0xD, 0xE, 0xF]),
1979
+ SBox([0x8, 0x0, 0x1, 0xD, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1980
+ SBox([0x1, 0x0, 0x4, 0x8, 0x2, 0xA, 0x6, 0x7, 0x3, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
1981
+ SBox([0x3, 0x0, 0x1, 0x2, 0x8, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
1982
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0xE, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0x6, 0xF]),
1983
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0xF, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x6]),
1984
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xF, 0xE, 0xD]),
1985
+ SBox([0xD, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
1986
+ SBox([0xE, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0x8, 0xF]),
1987
+ SBox([0x8, 0xD, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x0, 0xE, 0xF]),
1988
+ SBox([0x8, 0x0, 0xC, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x1, 0xD, 0xE, 0xF]),
1989
+ SBox([0x4, 0x0, 0x1, 0xC, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
1990
+ SBox([0x4, 0x0, 0x1, 0xE, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0x8, 0xF]),
1991
+ SBox([0x8, 0x0, 0x1, 0x3, 0x2, 0xF, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x5]),
1992
+ SBox([0x8, 0x6, 0x1, 0x2, 0x3, 0x5, 0x0, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1993
+ SBox([0x8, 0x0, 0x1, 0xA, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0x3, 0xB, 0xC, 0xD, 0xE, 0xF]),
1994
+ SBox([0x8, 0x0, 0x1, 0x6, 0x2, 0x5, 0x3, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
1995
+ SBox([0x8, 0x0, 0x1, 0x2, 0xC, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0x3, 0xD, 0xE, 0xF]),
1996
+ SBox([0x8, 0x0, 0x1, 0x2, 0xD, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0x3, 0xE, 0xF]),
1997
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0xE, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0x5, 0xF]),
1998
+ SBox([0xC, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
1999
+ SBox([0x8, 0x0, 0xD, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0x1, 0xE, 0xF]),
2000
+ SBox([0x2, 0x0, 0x1, 0x4, 0x3, 0x8, 0x6, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2001
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x8, 0x7, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2002
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x8, 0x6, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2003
+ SBox([0xF, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
2004
+ SBox([0x2, 0x0, 0x1, 0x3, 0xF, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
2005
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0xC, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x5, 0xD, 0xE, 0xF]),
2006
+ SBox([0x7, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x8, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2007
+ SBox([0x8, 0x0, 0x1, 0xF, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3]),
2008
+ SBox([0x2, 0x0, 0x1, 0x8, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2009
+ SBox([0x4, 0x8, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x0, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2010
+ SBox([0x4, 0x0, 0x1, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2011
+ SBox([0x8, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2012
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0x5, 0xA, 0x7, 0x1, 0x9, 0x6, 0xB, 0xC, 0xD, 0xE, 0xF]),
2013
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0x5, 0x6, 0x7, 0x1, 0x9, 0xA, 0xB, 0xE, 0xD, 0xC, 0xF]),
2014
+ SBox([0x6, 0x0, 0x8, 0x2, 0x3, 0x5, 0xA, 0x7, 0x1, 0x9, 0x4, 0xB, 0xC, 0xD, 0xE, 0xF]),
2015
+ SBox([0x6, 0x0, 0x8, 0x2, 0x3, 0x5, 0x4, 0x7, 0x1, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2016
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2017
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0xC, 0x7, 0x5, 0x9, 0xA, 0xB, 0x6, 0xD, 0xE, 0xF]),
2018
+ SBox([0x3, 0x0, 0x1, 0x2, 0x8, 0x5, 0xC, 0x7, 0x4, 0x9, 0xA, 0xB, 0x6, 0xD, 0xE, 0xF]),
2019
+ SBox([0x3, 0x0, 0x1, 0x2, 0xC, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
2020
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x6, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2021
+ SBox([0x4, 0x0, 0x8, 0x2, 0x3, 0x5, 0x6, 0x7, 0x1, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2022
+ SBox([0x8, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2023
+ SBox([0x8, 0x0, 0xA, 0x2, 0x3, 0x5, 0x4, 0x7, 0x6, 0x9, 0x1, 0xB, 0xC, 0xD, 0xE, 0xF]),
2024
+ SBox([0x8, 0x0, 0x6, 0x2, 0x3, 0x5, 0x1, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2025
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xE, 0x8, 0xA, 0x9, 0xC, 0xD, 0xB, 0xF]),
2026
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xD, 0x9, 0x8, 0xB, 0xC, 0xA, 0xE, 0xF]),
2027
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xA, 0xC, 0x8, 0xB, 0x9, 0xD, 0xE, 0xF]),
2028
+ SBox([0x3, 0x0, 0x1, 0x2, 0x8, 0xB, 0x6, 0x7, 0x4, 0x9, 0xA, 0x5, 0xC, 0xD, 0xE, 0xF]),
2029
+ SBox([0x1, 0x0, 0x4, 0x8, 0x2, 0x5, 0xA, 0x7, 0x3, 0x9, 0x6, 0xB, 0xC, 0xD, 0xE, 0xF]),
2030
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xE, 0x9, 0x8, 0xB, 0xC, 0xD, 0xA, 0xF]),
2031
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xF, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xA]),
2032
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xA, 0xF, 0x9, 0xB, 0xC, 0xD, 0xE, 0x8]),
2033
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xC, 0x9, 0x8, 0xB, 0xA, 0xD, 0xE, 0xF]),
2034
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xD, 0x9, 0x8, 0xB, 0xC, 0xA, 0xE, 0xF]),
2035
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xA, 0xD, 0x9, 0xB, 0xC, 0x8, 0xE, 0xF]),
2036
+ SBox([0x6, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0xC, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
2037
+ SBox([0x6, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0xD, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
2038
+ SBox([0x6, 0x5, 0x1, 0x2, 0x3, 0x0, 0x4, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2039
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
2040
+ SBox([0x2, 0x0, 0x1, 0x4, 0x3, 0x5, 0x6, 0x7, 0xC, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
2041
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xD, 0x9, 0xA, 0xB, 0xC, 0x8, 0xE, 0xF]),
2042
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xE, 0x9, 0xA, 0xB, 0xC, 0xD, 0x8, 0xF]),
2043
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xE, 0x8, 0xA, 0xB, 0xC, 0xD, 0x9, 0xF]),
2044
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xB, 0x8, 0xA, 0x9, 0xC, 0xD, 0xE, 0xF]),
2045
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xF, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
2046
+ SBox([0x2, 0x0, 0x1, 0x3, 0x5, 0x4, 0x6, 0x7, 0xE, 0x9, 0xA, 0xB, 0xC, 0xD, 0x8, 0xF]),
2047
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xC, 0x9, 0xA, 0xB, 0x8, 0xD, 0xE, 0xF]),
2048
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xF, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
2049
+ SBox([0x1, 0x0, 0x4, 0x6, 0x2, 0x5, 0x3, 0x7, 0xA, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
2050
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xD, 0x8, 0x9, 0xB, 0xC, 0xA, 0xE, 0xF]),
2051
+ SBox([0x3, 0x0, 0x1, 0x2, 0x8, 0xA, 0x6, 0x7, 0x4, 0x9, 0x5, 0xB, 0xC, 0xD, 0xE, 0xF]),
2052
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xA, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
2053
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x4, 0x6, 0x7, 0x5, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2054
+ SBox([0x1, 0x0, 0x4, 0x8, 0x2, 0x5, 0x6, 0x7, 0x3, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2055
+ SBox([0x2, 0x0, 0x1, 0x3, 0x8, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2056
+ SBox([0x4, 0x6, 0x1, 0x2, 0x3, 0x5, 0x0, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2057
+ SBox([0x4, 0x0, 0x1, 0x6, 0x2, 0x5, 0x3, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2058
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0x9, 0x8, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2059
+ SBox([0x1, 0x0, 0x4, 0x6, 0x2, 0x5, 0x3, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2060
+ SBox([0x2, 0x0, 0x1, 0x4, 0x3, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2061
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2062
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0xA, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
2063
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xA, 0x8, 0x9, 0xB, 0xC, 0xD, 0xE, 0xF]),
2064
+ SBox([0x6, 0x0, 0x1, 0x2, 0x3, 0x5, 0x4, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2065
+ SBox([0x3, 0x0, 0x1, 0x2, 0x8, 0x5, 0x6, 0x7, 0x4, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2066
+ SBox([0x4, 0x0, 0x1, 0x2, 0x3, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2067
+ SBox([0x1, 0x0, 0x4, 0x3, 0x2, 0x5, 0x6, 0x7, 0xF, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x8]),
2068
+ SBox([0x2, 0x0, 0x1, 0x3, 0x5, 0x4, 0x6, 0x7, 0xA, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
2069
+ SBox([0x2, 0x0, 0x1, 0x3, 0x7, 0x4, 0x6, 0x5, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2070
+ SBox([0x1, 0x0, 0x4, 0x3, 0x2, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2071
+ SBox([0x2, 0x0, 0x1, 0x3, 0x5, 0x4, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2072
+ SBox([0x2, 0x0, 0x1, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2073
+ SBox([0x8, 0x0, 0xA, 0x2, 0x3, 0x5, 0x1, 0x7, 0x4, 0x9, 0x6, 0xB, 0xC, 0xD, 0xE, 0xF]),
2074
+ SBox([0x4, 0x0, 0x1, 0x3, 0x2, 0x5, 0x6, 0x7, 0xC, 0x8, 0x9, 0xB, 0xA, 0xD, 0xE, 0xF]),
2075
+ SBox([0x4, 0x0, 0x6, 0x2, 0x3, 0x5, 0x1, 0x7, 0xA, 0x9, 0x8, 0xB, 0xC, 0xD, 0xE, 0xF]),
2076
+ SBox([0x4, 0x0, 0x6, 0x2, 0x3, 0x5, 0x1, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2077
+ SBox([0x2, 0x0, 0x1, 0x3, 0x6, 0x4, 0x5, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2078
+ SBox([0x3, 0x0, 0x1, 0x2, 0x6, 0x5, 0x4, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2079
+ SBox([0x3, 0x0, 0x1, 0x2, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2080
+ SBox([0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2081
+ SBox([0x1, 0x0, 0x3, 0x2, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]),
2082
+ SBox([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF])
2083
+ ]
2084
+
2085
+ # Dictionary of all available SBoxes
2086
+ sboxes = {}
2087
+ for k in dir(sys.modules[__name__]):
2088
+ v = getattr(sys.modules[__name__], k)
2089
+ if isinstance(v, SBox):
2090
+ sboxes[k] = v