(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.0' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 456853, 11937]*) (*NotebookOutlinePosition[ 457485, 11959]*) (* CellTagsIndexPosition[ 457441, 11955]*) (*WindowFrame->Normal*) Notebook[{ Cell[BoxData[ \(Off[General::spell, General::spell1]\)], "Input"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[CellGroupData[{ Cell["Data Encryption Standard", "Title"], Cell[CellGroupData[{ Cell["E-box", "Section"], Cell[BoxData[ \(\(Expansion::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(Expansion[x_Integer] := Expansion[IntegerDigits[x, 2, 32]]\)], "Input"], Cell[BoxData[ \(Expansion[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[32 != len, Message[Expansion::"\", 32, len], bits[\([{32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1}]\)]]]\)], "Input"], Cell[CellGroupData[{ Cell["Validation", "Subsection"], Cell[BoxData[ \(\(r = PadRight[{1}, 32];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Map[{#, BaseForm[FromDigits[RotateRight[r, #], 2], 16], BaseForm[FromDigits[Expansion[RotateRight[r, #]], 2], 16]} &, Range[0, 31]], TableHeadings \[Rule] {None, {"\", "\", "\"}}]\)], \ "Input"], Cell[BoxData[ TagBox[GridBox[{ {"\<\"Round\"\>", "\<\"R\"\>", "\<\"E[R]\"\>"}, {"0", TagBox[ InterpretationBox[\("80000000"\_"16"\), 2147483648, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000001"\_"16"\), 70368744177665, Editable->False], (BaseForm[ #, 16]&)]}, {"1", TagBox[ InterpretationBox[\("40000000"\_"16"\), 1073741824, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000"\_"16"\), 35184372088832, Editable->False], (BaseForm[ #, 16]&)]}, {"2", TagBox[ InterpretationBox[\("20000000"\_"16"\), 536870912, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000"\_"16"\), 17592186044416, Editable->False], (BaseForm[ #, 16]&)]}, {"3", TagBox[ InterpretationBox[\("10000000"\_"16"\), 268435456, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("a0000000000"\_"16"\), 10995116277760, Editable->False], (BaseForm[ #, 16]&)]}, {"4", TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("50000000000"\_"16"\), 5497558138880, Editable->False], (BaseForm[ #, 16]&)]}, {"5", TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000"\_"16"\), 549755813888, Editable->False], (BaseForm[ #, 16]&)]}, {"6", TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000"\_"16"\), 274877906944, Editable->False], (BaseForm[ #, 16]&)]}, {"7", TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2800000000"\_"16"\), 171798691840, Editable->False], (BaseForm[ #, 16]&)]}, {"8", TagBox[ InterpretationBox[\("800000"\_"16"\), 8388608, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1400000000"\_"16"\), 85899345920, Editable->False], (BaseForm[ #, 16]&)]}, {"9", TagBox[ InterpretationBox[\("400000"\_"16"\), 4194304, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000"\_"16"\), 8589934592, Editable->False], (BaseForm[ #, 16]&)]}, {"10", TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)]}, {"11", TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("a0000000"\_"16"\), 2684354560, Editable->False], (BaseForm[ #, 16]&)]}, {"12", TagBox[ InterpretationBox[\("80000"\_"16"\), 524288, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("50000000"\_"16"\), 1342177280, Editable->False], (BaseForm[ #, 16]&)]}, {"13", TagBox[ InterpretationBox[\("40000"\_"16"\), 262144, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)]}, {"14", TagBox[ InterpretationBox[\("20000"\_"16"\), 131072, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)]}, {"15", TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2800000"\_"16"\), 41943040, Editable->False], (BaseForm[ #, 16]&)]}, {"16", TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1400000"\_"16"\), 20971520, Editable->False], (BaseForm[ #, 16]&)]}, {"17", TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)]}, {"18", TagBox[ InterpretationBox[\("2000"\_"16"\), 8192, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)]}, {"19", TagBox[ InterpretationBox[\("1000"\_"16"\), 4096, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("a0000"\_"16"\), 655360, Editable->False], (BaseForm[ #, 16]&)]}, {"20", TagBox[ InterpretationBox[\("800"\_"16"\), 2048, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("50000"\_"16"\), 327680, Editable->False], (BaseForm[ #, 16]&)]}, {"21", TagBox[ InterpretationBox[\("400"\_"16"\), 1024, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)]}, {"22", TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)]}, {"23", TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2800"\_"16"\), 10240, Editable->False], (BaseForm[ #, 16]&)]}, {"24", TagBox[ InterpretationBox[\("80"\_"16"\), 128, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1400"\_"16"\), 5120, Editable->False], (BaseForm[ #, 16]&)]}, {"25", TagBox[ InterpretationBox[\("40"\_"16"\), 64, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)]}, {"26", TagBox[ InterpretationBox[\("20"\_"16"\), 32, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)]}, {"27", TagBox[ InterpretationBox[\("10"\_"16"\), 16, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("a0"\_"16"\), 160, Editable->False], (BaseForm[ #, 16]&)]}, {"28", TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("50"\_"16"\), 80, Editable->False], (BaseForm[ #, 16]&)]}, {"29", TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)]}, {"30", TagBox[ InterpretationBox[\("2"\_"16"\), 2, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)]}, {"31", TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000002"\_"16"\), 140737488355330, Editable->False], (BaseForm[ #, 16]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {"Round", "R", "E[R]"}}]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixPlot[ Map[Expansion[RotateRight[r, #]] &, Range[0, 31]]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .66667 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% DensityGraphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.00921474 0.0200321 0.663862 0.0200321 [ [.00921 -0.0125 -3 -9 ] [.00921 -0.0125 3 0 ] [.20954 -0.0125 -6 -9 ] [.20954 -0.0125 6 0 ] [.40986 -0.0125 -6 -9 ] [.40986 -0.0125 6 0 ] [.61018 -0.0125 -6 -9 ] [.61018 -0.0125 6 0 ] [.8105 -0.0125 -6 -9 ] [.8105 -0.0125 6 0 ] [ 0 0 -0.125 0 ] [-0.0125 .0629 -12 -4.5 ] [-0.0125 .0629 0 4.5 ] [-0.0125 .26322 -12 -4.5 ] [-0.0125 .26322 0 4.5 ] [-0.0125 .46354 -12 -4.5 ] [-0.0125 .46354 0 4.5 ] [-0.0125 .66386 -6 -4.5 ] [-0.0125 .66386 0 4.5 ] [ 0 0 -0.125 0 ] [.00921 .67917 -3 0 ] [.00921 .67917 3 9 ] [.20954 .67917 -6 0 ] [.20954 .67917 6 9 ] [.40986 .67917 -6 0 ] [.40986 .67917 6 9 ] [.61018 .67917 -6 0 ] [.61018 .67917 6 9 ] [.8105 .67917 -6 0 ] [.8105 .67917 6 9 ] [ 0 .66667 .125 0 ] [1.0125 .0629 0 -4.5 ] [1.0125 .0629 12 4.5 ] [1.0125 .26322 0 -4.5 ] [1.0125 .26322 12 4.5 ] [1.0125 .46354 0 -4.5 ] [1.0125 .46354 12 4.5 ] [1.0125 .66386 0 -4.5 ] [1.0125 .66386 6 4.5 ] [ 1 0 .125 0 ] [ 0 0 0 0 ] [ 1 .66667 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .00921 0 m .00921 .00625 L s [(0)] .00921 -0.0125 0 1 Mshowa .20954 0 m .20954 .00625 L s [(10)] .20954 -0.0125 0 1 Mshowa .40986 0 m .40986 .00625 L s [(20)] .40986 -0.0125 0 1 Mshowa .61018 0 m .61018 .00625 L s [(30)] .61018 -0.0125 0 1 Mshowa .8105 0 m .8105 .00625 L s [(40)] .8105 -0.0125 0 1 Mshowa 0 0 m 1 0 L s 0 .0629 m .00625 .0629 L s [(30)] -0.0125 .0629 1 0 Mshowa 0 .26322 m .00625 .26322 L s [(20)] -0.0125 .26322 1 0 Mshowa 0 .46354 m .00625 .46354 L s [(10)] -0.0125 .46354 1 0 Mshowa 0 .66386 m .00625 .66386 L s [(0)] -0.0125 .66386 1 0 Mshowa 0 0 m 0 .66667 L s .00921 .66042 m .00921 .66667 L s [(0)] .00921 .67917 0 -1 Mshowa .20954 .66042 m .20954 .66667 L s [(10)] .20954 .67917 0 -1 Mshowa .40986 .66042 m .40986 .66667 L s [(20)] .40986 .67917 0 -1 Mshowa .61018 .66042 m .61018 .66667 L s [(30)] .61018 .67917 0 -1 Mshowa .8105 .66042 m .8105 .66667 L s [(40)] .8105 .67917 0 -1 Mshowa 0 .66667 m 1 .66667 L s .99375 .0629 m 1 .0629 L s [(30)] 1.0125 .0629 -1 0 Mshowa .99375 .26322 m 1 .26322 L s [(20)] 1.0125 .26322 -1 0 Mshowa .99375 .46354 m 1 .46354 L s [(10)] 1.0125 .46354 -1 0 Mshowa .99375 .66386 m 1 .66386 L s [(0)] 1.0125 .66386 -1 0 Mshowa 1 0 m 1 .66667 L s 0 0 m 1 0 L 1 .66667 L 0 .66667 L closepath clip newpath % Start of gray image p .01923 .01282 translate .96154 .64103 scale 48 string 48 32 8 [48 0 0 32 0 0] { \tcurrentfile \t1 index \treadhexstring \tpop } Mimage 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00FF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00FF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 FF00FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF 00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00 pop P % End of image % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 192}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg80oooo1@0000090?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003o ool0oooo0080oooo1@00003R0?ooo`D000002@3oool00`000000oooo0?ooo`0A0?ooo`004P3oool0 0`000000oooo0?ooo`020?ooo`D00000hP3oool5000000T0oooo00<000000?ooo`3oool04@3oool0 0180oooo00<000000?ooo`3oool00P3oool500000>80oooo1@0000090?ooo`030000003oool0oooo 0140oooo000B0?ooo`030000003oool0oooo0080oooo1@00003R0?ooo`D000002@3oool00`000000 oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`3T0?ooo`D000003P3oool00`000000oooo 0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`3T0?ooo`D000003P3oool00`000000oooo0?oo o`0A0?ooo`004P3oool00`000000oooo0?ooo`3T0?ooo`D000003P3oool00`000000oooo0?ooo`0A 0?ooo`004P3oool00`000000oooo0?ooo`3T0?ooo`D000003P3oool00`000000oooo0?ooo`0A0?oo o`001@3oool2000000@0oooo0P0000050?ooo`030000003oool0oooo0>@0oooo1@00000>0?ooo`03 0000003oool0oooo0080oooo0P0000040?ooo`8000001`3oool000@0oooo00@000000?ooo`3oool0 00000P3oool010000000oooo0?ooo`0000040?ooo`030000003oool0oooo0=l0oooo1@00000C0?oo o`050000003oool0oooo0?ooo`0000000P3oool010000000oooo0?ooo`0000020?ooo`030000003o ool0oooo00@0oooo00070?ooo`040000003oool0oooo00000080oooo00<000000?ooo`3oool00P3o ool300000=l0oooo1@00000A0?ooo`<000001P3oool010000000oooo0?ooo`0000020?ooo`030000 003oool0oooo00@0oooo00050?ooo`8000000`3oool010000000oooo0?ooo`0000040?ooo`030000 003oool0oooo0=l0oooo1@00000C0?ooo`030000003oool0oooo0080oooo0P0000030?ooo`040000 003oool0oooo000000H0oooo00070?ooo`040000003oool0oooo00000080oooo00<000000?ooo`3o ool00P3oool00`000000oooo0?ooo`3O0?ooo`D000004`3oool00`000000oooo0?ooo`040?ooo`04 0000003oool0oooo00000080oooo00<000000?ooo`3oool0103oool000@0oooo00@000000?ooo`3o ool000000P3oool010000000oooo0?ooo`0000040?ooo`030000003oool0oooo0=l0oooo1@00000C 0?ooo`050000003oool0oooo0?ooo`0000000P3oool010000000oooo0?ooo`0000020?ooo`030000 003oool0oooo00@0oooo00050?ooo`800000103oool2000000D0oooo00<000000?ooo`3oool0d03o ool5000000D0oooo1@00000H0?ooo`030000003oool0oooo0080oooo0P0000040?ooo`8000001`3o ool00180oooo00<000000?ooo`3oool0d03oool5000000D0oooo1@00000H0?ooo`030000003oool0 oooo0140oooo000B0?ooo`030000003oool0oooo0=00oooo1@0000050?ooo`D00000603oool00`00 0000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`3@0?ooo`D000001@3oool5000001P0 oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0d03oool5000000D0oooo 1@00000H0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0`3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`2]0?ooo`D0 00001@3oool5000003/0oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0 [@3oool5000000D0oooo1@00000k0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003o ool0oooo0:P0oooo1@00001:0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0 oooo0:P0oooo1@00001:0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo 0:P0oooo1@00001:0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:P0 oooo1@00001:0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:P0oooo 1@00001:0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:<0oooo1@00 001?0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:<0oooo1@00001? 0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:<0oooo1@00001?0?oo o`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:<0oooo1@00001?0?ooo`03 0000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0:<0oooo1@00001?0?ooo`030000 003oool0oooo0140oooo000B0?ooo`030000003oool0oooo09@0oooo1@0000050?ooo`D00000E03o ool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`2D0?ooo`D000001@3oool5 000005@0oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0U03oool50000 00D0oooo1@00001D0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo09@0 oooo1@0000050?ooo`D00000E03oool00`000000oooo0?ooo`0A0?ooo`00103oool4000000<0oooo 0P0000050?ooo`030000003oool0oooo09@0oooo1@0000050?ooo`D00000E03oool010000000oooo 0?ooo`3oool4000000<0oooo0P0000070?ooo`00103oool00`000000oooo0?ooo`030?ooo`040000 003oool0oooo000000@0oooo00<000000?ooo`3oool0S`3oool5000000D0oooo1@00001I0?ooo`05 0000003oool0oooo0?ooo`0000001@3oool010000000oooo0?ooo`0000060?ooo`001@3oool00`00 0000oooo0?ooo`020?ooo`040000003oool0oooo000000@0oooo0`00002?0?ooo`D000001@3oool5 000005L0oooo0`0000040?ooo`030000003oool0oooo0080oooo00@000000?ooo`3oool000001P3o ool000H0oooo00D000000?ooo`3oool0oooo000000020?ooo`030000003oool0oooo0080oooo00<0 00000?ooo`3oool0S`3oool5000000D0oooo1@00001I0?ooo`030000003oool0oooo00<0oooo00D0 00000?ooo`3oool0oooo000000020?ooo`030000003oool0oooo00@0oooo00070?ooo`040000003o ool0oooo00000080oooo00<000000?ooo`3oool00P3oool00`000000oooo0?ooo`2?0?ooo`D00000 1@3oool5000005T0oooo00<000000?ooo`3oool0103oool010000000oooo0?ooo`0000020?ooo`03 0000003oool0oooo00@0oooo00040?ooo`040000003oool0oooo00000080oooo00@000000?ooo`3o ool00000103oool00`000000oooo0?ooo`2?0?ooo`D000001@3oool5000005T0oooo00D000000?oo o`3oool0oooo000000020?ooo`040000003oool0oooo00000080oooo00<000000?ooo`3oool0103o ool000D0oooo0P0000040?ooo`8000001@3oool00`000000oooo0?ooo`2:0?ooo`D00000J03oool0 0`000000oooo0?ooo`020?ooo`800000103oool2000000L0oooo000B0?ooo`030000003oool0oooo 08X0oooo1@00001X0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08X0 oooo1@00001X0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08X0oooo 1@00001X0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08X0oooo1@00 001X0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08D0oooo1@00001] 0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08D0oooo1@00001]0?oo o`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08D0oooo1@00001]0?ooo`03 0000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08D0oooo1@00001]0?ooo`030000 003oool0oooo0140oooo000B0?ooo`030000003oool0oooo08D0oooo1@00001]0?ooo`030000003o ool0oooo0140oooo000B0?ooo`030000003oool0oooo07D0oooo1P0000050?ooo`D00000LP3oool0 0`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1e0?ooo`H000001@3oool50000 0780oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0M@3oool6000000D0 oooo1@00001b0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo07D0oooo 1P0000050?ooo`D00000LP3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?oo o`1e0?ooo`H000001@3oool500000780oooo00<000000?ooo`3oool04@3oool00180oooo00<00000 0?ooo`3oool0L03oool5000000H0oooo1@00001g0?ooo`030000003oool0oooo0140oooo000B0?oo o`030000003oool0oooo0700oooo1@0000060?ooo`D00000M`3oool00`000000oooo0?ooo`0A0?oo o`004P3oool00`000000oooo0?ooo`1`0?ooo`D000001P3oool5000007L0oooo00<000000?ooo`3o ool04@3oool00180oooo00<000000?ooo`3oool0L03oool5000000H0oooo1@00001g0?ooo`030000 003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0700oooo1@0000060?ooo`D00000M`3o ool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1[0?ooo`D00000Q`3oool0 0`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1[0?ooo`D00000Q`3oool00`00 0000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1[0?ooo`D00000Q`3oool00`000000 oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1[0?ooo`D00000Q`3oool00`000000oooo 0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1V0?ooo`D00000S03oool00`000000oooo0?oo o`0A0?ooo`004P3oool00`000000oooo0?ooo`1V0?ooo`D00000S03oool00`000000oooo0?ooo`0A 0?ooo`004P3oool00`000000oooo0?ooo`1V0?ooo`D00000S03oool00`000000oooo0?ooo`0A0?oo o`004P3oool00`000000oooo0?ooo`1V0?ooo`D00000S03oool00`000000oooo0?ooo`0A0?ooo`00 4P3oool00`000000oooo0?ooo`1V0?ooo`D00000S03oool00`000000oooo0?ooo`0A0?ooo`004P3o ool00`000000oooo0?ooo`1G0?ooo`D000001@3oool500000940oooo00<000000?ooo`3oool04@3o ool00180oooo00<000000?ooo`3oool0E`3oool5000000D0oooo1@00002A0?ooo`030000003oool0 oooo0140oooo000B0?ooo`030000003oool0oooo05L0oooo1@0000050?ooo`D00000T@3oool00`00 0000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1G0?ooo`D000001@3oool500000940 oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0E`3oool5000000D0oooo 1@00002A0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo0580oooo1@00 00050?ooo`D00000UP3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`1B 0?ooo`D000001@3oool5000009H0oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?oo o`3oool0DP3oool5000000D0oooo1@00002F0?ooo`030000003oool0oooo0140oooo000B0?ooo`03 0000003oool0oooo0580oooo1@0000050?ooo`D00000UP3oool00`000000oooo0?ooo`0A0?ooo`00 4P3oool00`000000oooo0?ooo`1B0?ooo`D000001@3oool5000009H0oooo00<000000?ooo`3oool0 4@3oool00180oooo00<000000?ooo`3oool0C@3oool500000:D0oooo00<000000?ooo`3oool04@3o ool00180oooo00<000000?ooo`3oool0C@3oool500000:D0oooo00<000000?ooo`3oool04@3oool0 0180oooo00<000000?ooo`3oool0C@3oool500000:D0oooo00<000000?ooo`3oool04@3oool00180 oooo00<000000?ooo`3oool0C@3oool500000:D0oooo00<000000?ooo`3oool04@3oool00180oooo 00<000000?ooo`3oool0C@3oool500000:D0oooo00<000000?ooo`3oool04@3oool00180oooo00<0 00000?ooo`3oool0B03oool500000:X0oooo00<000000?ooo`3oool04@3oool000@0oooo10000003 0?ooo`8000001@3oool00`000000oooo0?ooo`180?ooo`D00000ZP3oool010000000oooo0?ooo`3o ool4000000<0oooo0P0000070?ooo`001P3oool01@000000oooo0?ooo`3oool000000080oooo00<0 00000?ooo`3oool00P3oool00`000000oooo0?ooo`180?ooo`D00000ZP3oool00`000000oooo0?oo o`030?ooo`050000003oool0oooo0?ooo`0000000P3oool00`000000oooo0?ooo`040?ooo`001P3o ool01@000000oooo0?ooo`3oool000000080oooo00<000000?ooo`3oool00P3oool3000004P0oooo 1@00002X0?ooo`<000001@3oool01@000000oooo0?ooo`3oool000000080oooo00<000000?ooo`3o ool0103oool000H0oooo00D000000?ooo`3oool0oooo000000020?ooo`030000003oool0oooo0080 oooo00<000000?ooo`3oool0B03oool500000:X0oooo00<000000?ooo`3oool00`3oool01@000000 oooo0?ooo`3oool000000080oooo00<000000?ooo`3oool0103oool000H0oooo00D000000?ooo`3o ool0oooo000000020?ooo`030000003oool0oooo0080oooo00<000000?ooo`3oool0>@3oool50000 00D0oooo1@00002_0?ooo`030000003oool0oooo00<0oooo00D000000?ooo`3oool0oooo00000002 0?ooo`030000003oool0oooo00@0oooo00040?ooo`<000000`3oool010000000oooo0?ooo`000004 0?ooo`030000003oool0oooo03T0oooo1@0000050?ooo`D00000[`3oool010000000oooo0?ooo`3o ool3000000<0oooo00@000000?ooo`3oool000001P3oool000H0oooo00<000000?ooo`3oool00P3o ool2000000D0oooo00<000000?ooo`3oool0>@3oool5000000D0oooo1@00002_0?ooo`030000003o ool0oooo00<0oooo00<000000?ooo`3oool00P3oool2000000L0oooo000B0?ooo`030000003oool0 oooo03T0oooo1@0000050?ooo`D00000[`3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`00 0000oooo0?ooo`0i0?ooo`D000001@3oool500000:l0oooo00<000000?ooo`3oool04@3oool00180 oooo00<000000?ooo`3oool0=03oool5000000D0oooo1@00002d0?ooo`030000003oool0oooo0140 oooo000B0?ooo`030000003oool0oooo03@0oooo1@0000050?ooo`D00000]03oool00`000000oooo 0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0d0?ooo`D000001@3oool500000;@0oooo00<0 00000?ooo`3oool04@3oool00180oooo00<000000?ooo`3oool0=03oool5000000D0oooo1@00002d 0?ooo`030000003oool0oooo0140oooo000B0?ooo`030000003oool0oooo03@0oooo1@0000050?oo o`D00000]03oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0_0?ooo`D0 0000``3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0_0?ooo`D00000 ``3oool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0_0?ooo`D00000``3o ool00`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0_0?ooo`D00000``3oool0 0`000000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0_0?ooo`D00000``3oool00`00 0000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0Z0?ooo`D00000b03oool00`000000 oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0Z0?ooo`D00000b03oool00`000000oooo 0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`0Z0?ooo`D00000b03oool00`000000oooo0?oo o`0A0?ooo`004P3oool00`000000oooo0?ooo`0Z0?ooo`D00000b03oool00`000000oooo0?ooo`0A 0?ooo`004P3oool00`000000oooo0?ooo`0Z0?ooo`D00000b03oool00`000000oooo0?ooo`0A0?oo o`004P3oool00`000000oooo0?ooo`0K0?ooo`D000001@3oool50000040oooo00<000000?ooo`3o ool04@3oool00180oooo00<000000?ooo`3oool04@3oool500000>40oooo00<000000?ooo`3oool0 4@3oool00180oooo00<000000?ooo`3oool04@3oool500000>40oooo00<000000?ooo`3oool04@3o ool00180oooo00<000000?ooo`3oool04@3oool500000>40oooo00<000000?ooo`3oool04@3oool0 0180oooo00<000000?ooo`3oool04@3oool500000>40oooo00<000000?ooo`3oool04@3oool00180 oooo00<000000?ooo`3oool0303oool500000>H0oooo00<000000?ooo`3oool04@3oool00180oooo 00<000000?ooo`3oool0303oool500000>H0oooo00<000000?ooo`3oool04@3oool00180oooo00<0 00000?ooo`3oool0303oool500000>H0oooo00<000000?ooo`3oool04@3oool00180oooo00<00000 0?ooo`3oool0303oool500000>H0oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?oo o`3oool0303oool500000>H0oooo00<000000?ooo`3oool04@3oool00180oooo00<000000?ooo`3o ool01`3oool500000>80oooo1@0000040?ooo`030000003oool0oooo0140oooo000B0?ooo`030000 003oool0oooo00L0oooo1@00003R0?ooo`D00000103oool00`000000oooo0?ooo`0A0?ooo`004P3o ool00`000000oooo0?ooo`070?ooo`D00000hP3oool5000000@0oooo00<000000?ooo`3oool04@3o ool00180oooo00<000000?ooo`3oool01`3oool500000>80oooo1@0000040?ooo`030000003oool0 oooo0140oooo000B0?ooo`030000003oool0oooo00L0oooo1@00003R0?ooo`D00000103oool00`00 0000oooo0?ooo`0A0?ooo`004P3oool00`000000oooo0?ooo`3g0?ooo`030000003oool0oooo0140 oooo000;0?ooo`8000001@3oool00`000000oooo0?ooo`3g0?ooo`030000003oool0oooo0080oooo 0P00000=0?ooo`002P3oool010000000oooo0?ooo`0000040?ooo`030000003oool000000340oooo 00<000000?ooo`3oool0;`3oool00`000000oooo0?ooo`0`0?ooo`030000003oool0oooo02l0oooo 00<000000?ooo`3oool0;03oool01@000000oooo0?ooo`3oool000000080oooo00<000000?ooo`3o ool02P3oool000X0oooo00@000000?ooo`3oool00000103ooook000000<0oooo00@000000?ooo`3o ool00000303oool000X0oooo00@000000?ooo`3oool00000o`3oool30?ooo`040000003oool0oooo 000000`0oooo000:0?ooo`040000003oool0oooo00000?l0oooo0`3oool010000000oooo0?ooo`00 000<0?ooo`002P3oool010000000oooo0?ooo`00003o0?ooo`<0oooo00@000000?ooo`3oool00000 303oool000/0oooo0P00003o0?ooo`D0oooo0P00000=0?ooo`00o`3ooolQ0?ooo`004`3oool20000 02`0oooo100000030?ooo`800000:@3oool4000000<0oooo0P00000[0?ooo`800000103oool20000 02/0oooo00<000000?ooo`3oool00P3oool2000003l0oooo000B0?ooo`040000003oool0oooo0000 02d0oooo00D000000?ooo`3oool0oooo000000020?ooo`030000003oool0oooo02H0oooo00<00000 0?ooo`3oool00`3oool010000000oooo0?ooo`00000Y0?ooo`040000003oool0oooo00000080oooo 00@000000?ooo`3oool00000:P3oool01@000000oooo0?ooo`3oool000000080oooo00<000000?oo o`3oool0?03oool00180oooo00@000000?ooo`3oool00000;@3oool01@000000oooo0?ooo`3oool0 00000080oooo00<000000?ooo`3oool09`3oool00`000000oooo0?ooo`020?ooo`040000003oool0 oooo000002`0oooo00@000000?ooo`3oool000000P3oool00`000000oooo0?ooo`0U0?ooo`D00000 0P3oool010000000oooo0?ooo`00000n0?ooo`004P3oool010000000oooo0?ooo`00000]0?ooo`05 0000003oool0oooo0?ooo`0000000P3oool00`000000oooo0?ooo`0X0?ooo`050000003oool0oooo 0?ooo`0000000P3oool00`000000oooo0?ooo`0X0?ooo`8000000`3oool010000000oooo0?ooo`00 000W0?ooo`040000003oool0oooo000000<0oooo00@000000?ooo`3oool00000?P3oool00180oooo 00@000000?ooo`3oool00000;@3oool01@000000oooo0?ooo`3oool000000080oooo00<000000?oo o`3oool0:@3oool010000000oooo0?ooo`0000020?ooo`030000003oool0oooo02X0oooo00@00000 0?ooo`3oool000000P3oool00`000000oooo0?ooo`0V0?ooo`030000003oool0000000<0oooo00@0 00000?ooo`3oool00000?P3oool00180oooo00@000000?ooo`3oool00000:`3oool3000000<0oooo 00@000000?ooo`3oool00000:03oool010000000oooo0?ooo`0000020?ooo`040000003oool0oooo 000002T0oooo00@000000?ooo`3oool000000P3oool010000000oooo0?ooo`00000Y0?ooo`800000 0`3oool010000000oooo0?ooo`00000n0?ooo`004`3oool2000002h0oooo00<000000?ooo`3oool0 0P3oool2000002X0oooo0P0000040?ooo`800000:`3oool2000000@0oooo0P00000[0?ooo`030000 003oool0oooo0080oooo0P00000o0?ooo`00\ \>"], ImageRangeCache->{{{0, 287}, {191, 0}} -> {-4.14069, -35.5604, 0.199586, \ 0.199586}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] DensityGraphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[BoxData[ \(Clear[r]\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["S-boxes", "Section"], Cell[CellGroupData[{ Cell[BoxData[ \(s1 = {{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7}, {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8}, {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0}, {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}}\)], "Input"], Cell[BoxData[ \({{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7}, {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8}, {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0}, {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s1]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"14", "4", "13", "1", "2", "15", "11", "8", "3", "10", "6", "12", "5", "9", "0", "7"}, {"0", "15", "7", "4", "14", "2", "13", "1", "10", "6", "12", "11", "9", "5", "3", "8"}, {"4", "1", "14", "8", "13", "6", "2", "11", "15", "12", "9", "7", "3", "10", "5", "0"}, {"15", "12", "8", "2", "4", "9", "1", "7", "5", "11", "3", "14", "10", "0", "6", "13"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s2 = {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10}, {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5}, {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15}, {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}}\)], "Input"], Cell[BoxData[ \({{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10}, {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5}, {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15}, {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s2]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"15", "1", "8", "14", "6", "11", "3", "4", "9", "7", "2", "13", "12", "0", "5", "10"}, {"3", "13", "4", "7", "15", "2", "8", "14", "12", "0", "1", "10", "6", "9", "11", "5"}, {"0", "14", "7", "11", "10", "4", "13", "1", "5", "8", "12", "6", "9", "3", "2", "15"}, {"13", "8", "10", "1", "3", "15", "4", "2", "11", "6", "7", "12", "0", "5", "14", "9"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s3 = {{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8}, {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1}, {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7}, {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}}\)], "Input"], Cell[BoxData[ \({{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8}, {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1}, {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7}, {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s3]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"10", "0", "9", "14", "6", "3", "15", "5", "1", "13", "12", "7", "11", "4", "2", "8"}, {"13", "7", "0", "9", "3", "4", "6", "10", "2", "8", "5", "14", "12", "11", "15", "1"}, {"13", "6", "4", "9", "8", "15", "3", "0", "11", "1", "2", "12", "5", "10", "14", "7"}, {"1", "10", "13", "0", "6", "9", "8", "7", "4", "15", "14", "3", "11", "5", "2", "12"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s4 = {{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15}, {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9}, {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4}, {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}}\)], "Input"], Cell[BoxData[ \({{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15}, {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9}, {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4}, {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s4]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"7", "13", "14", "3", "0", "6", "9", "10", "1", "2", "8", "5", "11", "12", "4", "15"}, {"13", "8", "11", "5", "6", "15", "0", "3", "4", "7", "2", "12", "1", "10", "14", "9"}, {"10", "6", "9", "0", "12", "11", "7", "13", "15", "1", "3", "14", "5", "2", "8", "4"}, {"3", "15", "0", "6", "10", "1", "13", "8", "9", "4", "5", "11", "12", "7", "2", "14"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s5 = {{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9}, {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6}, {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14}, {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}}\)], "Input"], Cell[BoxData[ \({{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9}, {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6}, {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14}, {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s5]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"2", "12", "4", "1", "7", "10", "11", "6", "8", "5", "3", "15", "13", "0", "14", "9"}, {"14", "11", "2", "12", "4", "7", "13", "1", "5", "0", "15", "10", "3", "9", "8", "6"}, {"4", "2", "1", "11", "10", "13", "7", "8", "15", "9", "12", "5", "6", "3", "0", "14"}, {"11", "8", "12", "7", "1", "14", "2", "13", "6", "15", "0", "9", "10", "4", "5", "3"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s6 = {{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11}, {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8}, {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6}, {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}}\)], "Input"], Cell[BoxData[ \({{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11}, {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8}, {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6}, {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s6]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"12", "1", "10", "15", "9", "2", "6", "8", "0", "13", "3", "4", "14", "7", "5", "11"}, {"10", "15", "4", "2", "7", "12", "9", "5", "6", "1", "13", "14", "0", "11", "3", "8"}, {"9", "14", "15", "5", "2", "8", "12", "3", "7", "0", "4", "10", "1", "13", "11", "6"}, {"4", "3", "2", "12", "9", "5", "15", "10", "11", "14", "1", "7", "6", "0", "8", "13"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s7 = {{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1}, {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6}, {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2}, {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}}\)], "Input"], Cell[BoxData[ \({{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1}, {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6}, {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2}, {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s7]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"4", "11", "2", "14", "15", "0", "8", "13", "3", "12", "9", "7", "5", "10", "6", "1"}, {"13", "0", "11", "7", "4", "9", "1", "10", "14", "3", "5", "12", "2", "15", "8", "6"}, {"1", "4", "11", "13", "12", "3", "7", "14", "10", "15", "6", "8", "0", "5", "9", "2"}, {"6", "11", "13", "8", "1", "4", "10", "7", "9", "5", "0", "15", "14", "2", "3", "12"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(s8 = {{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7}, {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2}, {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8}, {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}\)], "Input"], Cell[BoxData[ \({{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7}, {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2}, {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8}, {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[s8]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"13", "2", "8", "4", "6", "15", "11", "1", "10", "9", "3", "14", "5", "0", "12", "7"}, {"1", "15", "13", "8", "10", "3", "7", "4", "12", "5", "6", "11", "0", "14", "9", "2"}, {"7", "11", "4", "1", "9", "12", "14", "2", "0", "6", "10", "13", "15", "3", "5", "8"}, {"2", "1", "14", "7", "4", "10", "8", "13", "15", "12", "9", "0", "3", "5", "6", "11"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(SBox[s_?MatrixQ, z_?VectorQ] := Module[{row, column}, row = 1 + FromDigits[Drop[z, {2, 5}], 2]; column = 1 + FromDigits[Take[z, {2, 5}], 2]; s[\([row, column]\)]]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(SBox[s2, {0, 0, 0, 1, 0, 0}]\)], "Input"], Cell[BoxData[ \(8\)], "Output"] }, Open ]], Cell[BoxData[ \(ApplySBoxes[z_?MatrixQ] := Module[{tmp}, tmp = Transpose[{{s1, s2, s3, s4, s5, s6, s7, s8}, z}]; tmp = Apply[SBox, tmp, {1}]; Map[IntegerDigits[#, 2, 4] &, tmp]]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["P-box", "Section"], Cell[BoxData[ \(\(FP::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(FP[c_Integer] := FP[IntegerDigits[c, 2, 32]]\)], "Input"], Cell[BoxData[ \(FP[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[32 != len, Message[FP::"\", 32, len], bits[\([{16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25}]\)]]]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["DES Function", "Section"], Cell[BoxData[ \(\(f::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(\(f::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(f[x_Integer, y_Integer] := f[IntegerDigits[x, 2, 32], IntegerDigits[y, 2, 48]]\)], "Input"], Cell[BoxData[ \(f[xbits_?VectorQ, y_Integer] := f[xbits, IntegerDigits[y, 2, 48]]\)], "Input"], Cell[BoxData[ \(f[x_Integer, ybits_?VectorQ] := f[IntegerDigits[x, 2, 32], ybits]\)], "Input"], Cell[BoxData[ \(f[xbits_?VectorQ, ybits_?VectorQ] := Module[{tmp, len}, len = Length[xbits]; If[32 != len, Message[f::"\", 32, len]; Return[]]; len = Length[ybits]; If[48 != len, Message[f::"\", 48, len]; Return[]]; tmp = Mod[Expansion[xbits] + ybits, 2]; tmp = Partition[tmp, 6]; tmp = ApplySBoxes[tmp]; FP[Flatten[tmp]]]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Key Schedule", "Section"], Cell[BoxData[ \(\(PC1::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(PC1[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[64 != len, Message[PC1::"\", 64, len], bits[\([{57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4}]\)]]]\)], "Input"], Cell[BoxData[ \(PC1[k_Integer] := PC1[IntegerDigits[k, 2, 64]]\)], "Input"], Cell[BoxData[ \(\(PC2::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(PC2[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[56 != len, Message[PC2::"\", 56, len], bits[\([{14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32}]\)]]]\)], "Input"], Cell[BoxData[ \(PC2[k_Integer] := PC2[IntegerDigits[k, 2, 56]]\)], "Input"], Cell[BoxData[ \(\(KeyShift::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(KeyShift[key_?VectorQ, round_Integer, opts___Rule] := Module[{left, right, len}, len = Length[key]; If[56 != len, Message[KeyShift::"\", 56, len]; Return[]]; left = Take[key, 28]; right = Take[key, \(-28\)]; If[MemberQ[{1, 2, 9, 16}, round], Join[RotateLeft[left], RotateLeft[right]], Join[RotateLeft[left, 2], RotateLeft[right, 2]]]]\)], "Input"], Cell[BoxData[ \(KeyShift[key_Integer, round_Integer] := KeyShift[IntegerDigits[key, 2, 56], round]\)], "Input"], Cell[CellGroupData[{ Cell["Key Validation", "Subsection"], Cell[BoxData[ \(\(junk = {0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Module[{key}, key = PC1[junk]; Do[key = KeyShift[key, j]; Print["\", j, "\<: \>", Partition[PC2[key], 6]], {j, 1, 16, 1}]]\)], "Input"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]1\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 0, 0, 1, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1}, {0, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 1}, {1, 1, 0, 0, 1, 0}}\), SequenceForm[ "Key ", 1, ": ", {{0, 0, 0, 1, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1}, {0, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 1}, {1, 1, 0, 0, 1, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]2\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 1, 0}, {1, 1, 1, 0, 1, 1}, {0, 1, 1, 0, 0, 1}, {1, 1, 0, 1, 1, 0}, {1, 1, 1, 1, 0, 0}, {1, 0, 0, 1, 1, 1}, {1, 0, 0, 1, 0, 1}}\), SequenceForm[ "Key ", 2, ": ", {{0, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 1, 0}, {1, 1, 1, 0, 1, 1}, {0, 1, 1, 0, 0, 1}, {1, 1, 0, 1, 1, 0}, {1, 1, 1, 1, 0, 0}, {1, 0, 0, 1, 1, 1}, {1, 0, 0, 1, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]3\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 0, 1, 0, 1}, {0, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 1, 0}, {0, 1, 0, 0, 0, 0}, {1, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 1}}\), SequenceForm[ "Key ", 3, ": ", {{0, 1, 0, 1, 0, 1}, {0, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 1, 0}, {0, 1, 0, 0, 0, 0}, {1, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]4\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 1, 1, 0, 0}, {1, 0, 1, 0, 1, 0}, {1, 1, 0, 1, 1, 1}, {0, 1, 0, 1, 1, 0}, {1, 1, 0, 1, 1, 0}, {1, 1, 0, 0, 1, 1}, {0, 1, 0, 1, 0, 0}, {0, 1, 1, 1, 0, 1}}\), SequenceForm[ "Key ", 4, ": ", {{0, 1, 1, 1, 0, 0}, {1, 0, 1, 0, 1, 0}, {1, 1, 0, 1, 1, 1}, {0, 1, 0, 1, 1, 0}, {1, 1, 0, 1, 1, 0}, {1, 1, 0, 0, 1, 1}, {0, 1, 0, 1, 0, 0}, {0, 1, 1, 1, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]5\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1}, {1, 1, 1, 0, 1, 0}, {1, 1, 0, 1, 0, 1}, {0, 0, 1, 1, 1, 0}, {1, 0, 1, 0, 0, 0}}\), SequenceForm[ "Key ", 5, ": ", {{0, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1}, {1, 1, 1, 0, 1, 0}, {1, 1, 0, 1, 0, 1}, {0, 0, 1, 1, 1, 0}, {1, 0, 1, 0, 0, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]6\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 1, 0, 0, 0}, {1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 0}, {1, 1, 1, 1, 1, 0}, {0, 1, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1}, {1, 0, 1, 1, 0, 0}, {1, 0, 1, 1, 1, 1}}\), SequenceForm[ "Key ", 6, ": ", {{0, 1, 1, 0, 0, 0}, {1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 0}, {1, 1, 1, 1, 1, 0}, {0, 1, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1}, {1, 0, 1, 1, 0, 0}, {1, 0, 1, 1, 1, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]7\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {1, 1, 0, 1, 1, 1}, {1, 1, 1, 1, 0, 1}, {1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0}, {1, 1, 1, 1, 0, 0}}\), SequenceForm[ "Key ", 7, ": ", {{1, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {1, 1, 0, 1, 1, 1}, {1, 1, 1, 1, 0, 1}, {1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0}, {1, 1, 1, 1, 0, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]8\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 1, 1, 1, 0, 1}, {1, 1, 1, 0, 0, 0}, {1, 0, 1, 0, 0, 0}, {1, 1, 1, 0, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1}}\), SequenceForm[ "Key ", 8, ": ", {{1, 1, 1, 1, 0, 1}, {1, 1, 1, 0, 0, 0}, {1, 0, 1, 0, 0, 0}, {1, 1, 1, 0, 1, 0}, {1, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]9\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 1}, {1, 0, 1, 0, 1, 1}, {1, 1, 1, 0, 1, 1}, {0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 1}}\), SequenceForm[ "Key ", 9, ": ", {{1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 1}, {1, 0, 1, 0, 1, 1}, {1, 1, 1, 0, 1, 1}, {0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]10\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 0, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 0, 1}, {0, 0, 0, 1, 1, 1}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1}, {0, 0, 1, 1, 1, 1}}\), SequenceForm[ "Key ", 10, ": ", {{1, 0, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 0, 1}, {0, 0, 0, 1, 1, 1}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1}, {0, 0, 1, 1, 1, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]11\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 0, 1, 0, 0, 0}, {0, 1, 0, 1, 0, 1}, {1, 1, 1, 1, 1, 1}, {0, 1, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 1}, {1, 0, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 0}, {0, 0, 0, 1, 1, 0}}\), SequenceForm[ "Key ", 11, ": ", {{0, 0, 1, 0, 0, 0}, {0, 1, 0, 1, 0, 1}, {1, 1, 1, 1, 1, 1}, {0, 1, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 1}, {1, 0, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 0}, {0, 0, 0, 1, 1, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]12\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 1, 1, 0, 1}, {0, 1, 0, 1, 1, 1}, {0, 0, 0, 1, 1, 1}, {1, 1, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 1}, {0, 0, 0, 1, 1, 0}, {0, 1, 1, 1, 1, 1}, {1, 0, 1, 0, 0, 1}}\), SequenceForm[ "Key ", 12, ": ", {{0, 1, 1, 1, 0, 1}, {0, 1, 0, 1, 1, 1}, {0, 0, 0, 1, 1, 1}, {1, 1, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 1}, {0, 0, 0, 1, 1, 0}, {0, 1, 1, 1, 1, 1}, {1, 0, 1, 0, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]13\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 0, 0, 1, 0, 1}, {1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 1, 1}, {0, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 0}, {1, 0, 1, 0, 1, 1}, {1, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 1}}\), SequenceForm[ "Key ", 13, ": ", {{1, 0, 0, 1, 0, 1}, {1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 1, 1}, {0, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 0}, {1, 0, 1, 0, 1, 1}, {1, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 1}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]14\[InvisibleSpace]": "\ \[InvisibleSpace]{{0, 1, 0, 1, 1, 1}, {1, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 1, 0}, {1, 1, 0, 1, 1, 1}, {1, 1, 1, 1, 0, 0}, {1, 0, 1, 1, 1, 0}, {0, 1, 1, 1, 0, 0}, {1, 1, 1, 0, 1, 0}}\), SequenceForm[ "Key ", 14, ": ", {{0, 1, 0, 1, 1, 1}, {1, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 1, 0}, {1, 1, 0, 1, 1, 1}, {1, 1, 1, 1, 0, 0}, {1, 0, 1, 1, 1, 0}, {0, 1, 1, 1, 0, 0}, {1, 1, 1, 0, 1, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]15\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 0, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 1}, {0, 0, 0, 1, 1, 0}, {0, 0, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 1}, {0, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 0, 0}, {0, 0, 1, 0, 1, 0}}\), SequenceForm[ "Key ", 15, ": ", {{1, 0, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 1}, {0, 0, 0, 1, 1, 0}, {0, 0, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 1}, {0, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 0, 0}, {0, 0, 1, 0, 1, 0}}], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Key "\[InvisibleSpace]16\[InvisibleSpace]": "\ \[InvisibleSpace]{{1, 1, 0, 0, 1, 0}, {1, 1, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 0}, {0, 0, 1, 0, 1, 1}, {0, 0, 0, 0, 1, 1}, {1, 0, 0, 0, 0, 1}, {0, 1, 1, 1, 1, 1}, {1, 1, 0, 1, 0, 1}}\), SequenceForm[ "Key ", 16, ": ", {{1, 1, 0, 0, 1, 0}, {1, 1, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 0}, {0, 0, 1, 0, 1, 1}, {0, 0, 0, 0, 1, 1}, {1, 0, 0, 0, 0, 1}, {0, 1, 1, 1, 1, 1}, {1, 1, 0, 1, 0, 1}}], Editable->False]], "Print"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Module[{key}, key = PC1[junk]; Do[key = KeyShift[key, j]; Print["\", j, "\<: \>", BaseForm[FromDigits[PC2[key], 2], 16]], {j, 1, 16, 1}]]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "1", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("1b02effc7072"\_"16"\), 29699430183026, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 1, ": ", BaseForm[ 29699430183026, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "2", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("79aed9dbc9e5"\_"16"\), 133791886330341, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 2, ": ", BaseForm[ 133791886330341, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "3", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("55fc8a42cf99"\_"16"\), 94543139753881, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 3, ": ", BaseForm[ 94543139753881, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "4", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("72add6db351d"\_"16"\), 126090959598877, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 4, ": ", BaseForm[ 126090959598877, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "5", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("7cec07eb53a8"\_"16"\), 137353186988968, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 5, ": ", BaseForm[ 137353186988968, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "6", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("63a53e507b2f"\_"16"\), 109561366215471, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 6, ": ", BaseForm[ 109561366215471, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "7", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("ec84b7f618bc"\_"16"\), 260054766196924, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 7, ": ", BaseForm[ 260054766196924, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "8", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("f78a3ac13bfb"\_"16"\), 272173063289851, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 8, ": ", BaseForm[ 272173063289851, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "9", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("e0dbebede781"\_"16"\), 247235160696705, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 9, ": ", BaseForm[ 247235160696705, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "10", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("b1f347ba464f"\_"16"\), 195658438559311, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 10, ": ", BaseForm[ 195658438559311, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "11", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("215fd3ded386"\_"16"\), 36695460205446, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 11, ": ", BaseForm[ 36695460205446, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "12", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("7571f59467e9"\_"16"\), 129132311898089, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 12, ": ", BaseForm[ 129132311898089, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "13", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("97c5d1faba41"\_"16"\), 166875887221313, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 13, ": ", BaseForm[ 166875887221313, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "14", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("5f43b7f2e73a"\_"16"\), 104744453596986, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 14, ": ", BaseForm[ 104744453596986, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "15", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("bf918d3d3f0a"\_"16"\), 210631860764426, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 15, ": ", BaseForm[ 210631860764426, 16]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Key \"\>", "\[InvisibleSpace]", "16", "\[InvisibleSpace]", "\<\": \"\>", "\[InvisibleSpace]", TagBox[ InterpretationBox[\("cb3d8b0e17f5"\_"16"\), 223465186400245, Editable->False], (BaseForm[ #, 16]&)]}], SequenceForm[ "Key ", 16, ": ", BaseForm[ 223465186400245, 16]], Editable->False]], "Print"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Module[{keys, key}, keys = {}; key = PC1[junk]; Do[key = KeyShift[key, j]; keys = Append[keys, PC2[key]]; Print[BaseForm[FromDigits[Last[keys], 2], 16]], {j, 1, 16, 1}]]\)], "Input"], Cell[BoxData[ TagBox[ InterpretationBox[\("1b02effc7072"\_"16"\), 29699430183026, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("79aed9dbc9e5"\_"16"\), 133791886330341, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("55fc8a42cf99"\_"16"\), 94543139753881, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("72add6db351d"\_"16"\), 126090959598877, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("7cec07eb53a8"\_"16"\), 137353186988968, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("63a53e507b2f"\_"16"\), 109561366215471, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("ec84b7f618bc"\_"16"\), 260054766196924, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("f78a3ac13bfb"\_"16"\), 272173063289851, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("e0dbebede781"\_"16"\), 247235160696705, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("b1f347ba464f"\_"16"\), 195658438559311, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("215fd3ded386"\_"16"\), 36695460205446, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("7571f59467e9"\_"16"\), 129132311898089, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("97c5d1faba41"\_"16"\), 166875887221313, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("5f43b7f2e73a"\_"16"\), 104744453596986, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("bf918d3d3f0a"\_"16"\), 210631860764426, Editable->False], (BaseForm[ #, 16]&)]], "Print"], Cell[BoxData[ TagBox[ InterpretationBox[\("cb3d8b0e17f5"\_"16"\), 223465186400245, Editable->False], (BaseForm[ #, 16]&)]], "Print"] }, Open ]], Cell[BoxData[ \(Clear[junk]\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Initial Permutation", "Section"], Cell[BoxData[ \(\(IP::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(\(IPInv::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(IP[x_Integer] := IP[IntegerDigits[x, 2, 64]]\)], "Input"], Cell[BoxData[ \(IP[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[64 != len, Message[IP::"\", 64, len], bits[\([{58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7}]\)]]]\)], "Input"], Cell[BoxData[ \(IPInv[x_Integer] := IPInv[IntegerDigits[x, 2, 64]]\)], "Input"], Cell[BoxData[ \(IPInv[bits_?VectorQ] := Module[{len}, len = Length[bits]; If[64 != len, Message[IPInv::"\", 64, len], bits[\([{40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25}]\)]]]\)], "Input"], Cell[CellGroupData[{ Cell["Validation", "Subsection"], Cell[BoxData[ \(\(pt = PadRight[{1}, 64];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Map[{#, BaseForm[FromDigits[RotateRight[pt, #], 2], 16], BaseForm[FromDigits[IP[IPInv[RotateRight[pt, #]]], 2], 16]} &, Range[0, 63]], TableHeadings \[Rule] {None, {"\", "\", \ "\"}}]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"\<\"Round\"\>", "\<\"PT\"\>", "\<\"IP[IPInv[PT]]\"\>"}, {"0", TagBox[ InterpretationBox[\("8000000000000000"\_"16"\), 9223372036854775808, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000000000"\_"16"\), 9223372036854775808, Editable->False], (BaseForm[ #, 16]&)]}, {"1", TagBox[ InterpretationBox[\("4000000000000000"\_"16"\), 4611686018427387904, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000000000"\_"16"\), 4611686018427387904, Editable->False], (BaseForm[ #, 16]&)]}, {"2", TagBox[ InterpretationBox[\("2000000000000000"\_"16"\), 2305843009213693952, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000000000"\_"16"\), 2305843009213693952, Editable->False], (BaseForm[ #, 16]&)]}, {"3", TagBox[ InterpretationBox[\("1000000000000000"\_"16"\), 1152921504606846976, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000000000"\_"16"\), 1152921504606846976, Editable->False], (BaseForm[ #, 16]&)]}, {"4", TagBox[ InterpretationBox[\("800000000000000"\_"16"\), 576460752303423488, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000000000"\_"16"\), 576460752303423488, Editable->False], (BaseForm[ #, 16]&)]}, {"5", TagBox[ InterpretationBox[\("400000000000000"\_"16"\), 288230376151711744, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000000000"\_"16"\), 288230376151711744, Editable->False], (BaseForm[ #, 16]&)]}, {"6", TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False], (BaseForm[ #, 16]&)]}, {"7", TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)]}, {"8", TagBox[ InterpretationBox[\("80000000000000"\_"16"\), 36028797018963968, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000000000"\_"16"\), 36028797018963968, Editable->False], (BaseForm[ #, 16]&)]}, {"9", TagBox[ InterpretationBox[\("40000000000000"\_"16"\), 18014398509481984, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000000000"\_"16"\), 18014398509481984, Editable->False], (BaseForm[ #, 16]&)]}, {"10", TagBox[ InterpretationBox[\("20000000000000"\_"16"\), 9007199254740992, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000000000"\_"16"\), 9007199254740992, Editable->False], (BaseForm[ #, 16]&)]}, {"11", TagBox[ InterpretationBox[\("10000000000000"\_"16"\), 4503599627370496, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000000000"\_"16"\), 4503599627370496, Editable->False], (BaseForm[ #, 16]&)]}, {"12", TagBox[ InterpretationBox[\("8000000000000"\_"16"\), 2251799813685248, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000000"\_"16"\), 2251799813685248, Editable->False], (BaseForm[ #, 16]&)]}, {"13", TagBox[ InterpretationBox[\("4000000000000"\_"16"\), 1125899906842624, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000000"\_"16"\), 1125899906842624, Editable->False], (BaseForm[ #, 16]&)]}, {"14", TagBox[ InterpretationBox[\("2000000000000"\_"16"\), 562949953421312, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000000"\_"16"\), 562949953421312, Editable->False], (BaseForm[ #, 16]&)]}, {"15", TagBox[ InterpretationBox[\("1000000000000"\_"16"\), 281474976710656, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000000"\_"16"\), 281474976710656, Editable->False], (BaseForm[ #, 16]&)]}, {"16", TagBox[ InterpretationBox[\("800000000000"\_"16"\), 140737488355328, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000000"\_"16"\), 140737488355328, Editable->False], (BaseForm[ #, 16]&)]}, {"17", TagBox[ InterpretationBox[\("400000000000"\_"16"\), 70368744177664, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000000"\_"16"\), 70368744177664, Editable->False], (BaseForm[ #, 16]&)]}, {"18", TagBox[ InterpretationBox[\("200000000000"\_"16"\), 35184372088832, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000"\_"16"\), 35184372088832, Editable->False], (BaseForm[ #, 16]&)]}, {"19", TagBox[ InterpretationBox[\("100000000000"\_"16"\), 17592186044416, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000"\_"16"\), 17592186044416, Editable->False], (BaseForm[ #, 16]&)]}, {"20", TagBox[ InterpretationBox[\("80000000000"\_"16"\), 8796093022208, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000000"\_"16"\), 8796093022208, Editable->False], (BaseForm[ #, 16]&)]}, {"21", TagBox[ InterpretationBox[\("40000000000"\_"16"\), 4398046511104, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000000"\_"16"\), 4398046511104, Editable->False], (BaseForm[ #, 16]&)]}, {"22", TagBox[ InterpretationBox[\("20000000000"\_"16"\), 2199023255552, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000000"\_"16"\), 2199023255552, Editable->False], (BaseForm[ #, 16]&)]}, {"23", TagBox[ InterpretationBox[\("10000000000"\_"16"\), 1099511627776, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000000"\_"16"\), 1099511627776, Editable->False], (BaseForm[ #, 16]&)]}, {"24", TagBox[ InterpretationBox[\("8000000000"\_"16"\), 549755813888, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000"\_"16"\), 549755813888, Editable->False], (BaseForm[ #, 16]&)]}, {"25", TagBox[ InterpretationBox[\("4000000000"\_"16"\), 274877906944, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000"\_"16"\), 274877906944, Editable->False], (BaseForm[ #, 16]&)]}, {"26", TagBox[ InterpretationBox[\("2000000000"\_"16"\), 137438953472, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000"\_"16"\), 137438953472, Editable->False], (BaseForm[ #, 16]&)]}, {"27", TagBox[ InterpretationBox[\("1000000000"\_"16"\), 68719476736, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000"\_"16"\), 68719476736, Editable->False], (BaseForm[ #, 16]&)]}, {"28", TagBox[ InterpretationBox[\("800000000"\_"16"\), 34359738368, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000"\_"16"\), 34359738368, Editable->False], (BaseForm[ #, 16]&)]}, {"29", TagBox[ InterpretationBox[\("400000000"\_"16"\), 17179869184, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000"\_"16"\), 17179869184, Editable->False], (BaseForm[ #, 16]&)]}, {"30", TagBox[ InterpretationBox[\("200000000"\_"16"\), 8589934592, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000"\_"16"\), 8589934592, Editable->False], (BaseForm[ #, 16]&)]}, {"31", TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)]}, {"32", TagBox[ InterpretationBox[\("80000000"\_"16"\), 2147483648, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000"\_"16"\), 2147483648, Editable->False], (BaseForm[ #, 16]&)]}, {"33", TagBox[ InterpretationBox[\("40000000"\_"16"\), 1073741824, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000"\_"16"\), 1073741824, Editable->False], (BaseForm[ #, 16]&)]}, {"34", TagBox[ InterpretationBox[\("20000000"\_"16"\), 536870912, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000"\_"16"\), 536870912, Editable->False], (BaseForm[ #, 16]&)]}, {"35", TagBox[ InterpretationBox[\("10000000"\_"16"\), 268435456, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000"\_"16"\), 268435456, Editable->False], (BaseForm[ #, 16]&)]}, {"36", TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)]}, {"37", TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)]}, {"38", TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)]}, {"39", TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)]}, {"40", TagBox[ InterpretationBox[\("800000"\_"16"\), 8388608, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000"\_"16"\), 8388608, Editable->False], (BaseForm[ #, 16]&)]}, {"41", TagBox[ InterpretationBox[\("400000"\_"16"\), 4194304, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000"\_"16"\), 4194304, Editable->False], (BaseForm[ #, 16]&)]}, {"42", TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)]}, {"43", TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)]}, {"44", TagBox[ InterpretationBox[\("80000"\_"16"\), 524288, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000"\_"16"\), 524288, Editable->False], (BaseForm[ #, 16]&)]}, {"45", TagBox[ InterpretationBox[\("40000"\_"16"\), 262144, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000"\_"16"\), 262144, Editable->False], (BaseForm[ #, 16]&)]}, {"46", TagBox[ InterpretationBox[\("20000"\_"16"\), 131072, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000"\_"16"\), 131072, Editable->False], (BaseForm[ #, 16]&)]}, {"47", TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)]}, {"48", TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)]}, {"49", TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)]}, {"50", TagBox[ InterpretationBox[\("2000"\_"16"\), 8192, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000"\_"16"\), 8192, Editable->False], (BaseForm[ #, 16]&)]}, {"51", TagBox[ InterpretationBox[\("1000"\_"16"\), 4096, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000"\_"16"\), 4096, Editable->False], (BaseForm[ #, 16]&)]}, {"52", TagBox[ InterpretationBox[\("800"\_"16"\), 2048, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800"\_"16"\), 2048, Editable->False], (BaseForm[ #, 16]&)]}, {"53", TagBox[ InterpretationBox[\("400"\_"16"\), 1024, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400"\_"16"\), 1024, Editable->False], (BaseForm[ #, 16]&)]}, {"54", TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)]}, {"55", TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)]}, {"56", TagBox[ InterpretationBox[\("80"\_"16"\), 128, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80"\_"16"\), 128, Editable->False], (BaseForm[ #, 16]&)]}, {"57", TagBox[ InterpretationBox[\("40"\_"16"\), 64, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40"\_"16"\), 64, Editable->False], (BaseForm[ #, 16]&)]}, {"58", TagBox[ InterpretationBox[\("20"\_"16"\), 32, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20"\_"16"\), 32, Editable->False], (BaseForm[ #, 16]&)]}, {"59", TagBox[ InterpretationBox[\("10"\_"16"\), 16, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10"\_"16"\), 16, Editable->False], (BaseForm[ #, 16]&)]}, {"60", TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)]}, {"61", TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)]}, {"62", TagBox[ InterpretationBox[\("2"\_"16"\), 2, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2"\_"16"\), 2, Editable->False], (BaseForm[ #, 16]&)]}, {"63", TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {"Round", "PT", "IP[IPInv[PT]]"}}]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Map[{#, BaseForm[FromDigits[RotateRight[pt, #], 2], 16], BaseForm[FromDigits[IPInv[IP[RotateRight[pt, #]]], 2], 16]} &, Range[0, 63]], TableHeadings \[Rule] {None, {"\", "\", \ "\"}}]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"\<\"Round\"\>", "\<\"PT\"\>", "\<\"IPInv[IP[PT]]\"\>"}, {"0", TagBox[ InterpretationBox[\("8000000000000000"\_"16"\), 9223372036854775808, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000000000"\_"16"\), 9223372036854775808, Editable->False], (BaseForm[ #, 16]&)]}, {"1", TagBox[ InterpretationBox[\("4000000000000000"\_"16"\), 4611686018427387904, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000000000"\_"16"\), 4611686018427387904, Editable->False], (BaseForm[ #, 16]&)]}, {"2", TagBox[ InterpretationBox[\("2000000000000000"\_"16"\), 2305843009213693952, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000000000"\_"16"\), 2305843009213693952, Editable->False], (BaseForm[ #, 16]&)]}, {"3", TagBox[ InterpretationBox[\("1000000000000000"\_"16"\), 1152921504606846976, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000000000"\_"16"\), 1152921504606846976, Editable->False], (BaseForm[ #, 16]&)]}, {"4", TagBox[ InterpretationBox[\("800000000000000"\_"16"\), 576460752303423488, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000000000"\_"16"\), 576460752303423488, Editable->False], (BaseForm[ #, 16]&)]}, {"5", TagBox[ InterpretationBox[\("400000000000000"\_"16"\), 288230376151711744, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000000000"\_"16"\), 288230376151711744, Editable->False], (BaseForm[ #, 16]&)]}, {"6", TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False], (BaseForm[ #, 16]&)]}, {"7", TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)]}, {"8", TagBox[ InterpretationBox[\("80000000000000"\_"16"\), 36028797018963968, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000000000"\_"16"\), 36028797018963968, Editable->False], (BaseForm[ #, 16]&)]}, {"9", TagBox[ InterpretationBox[\("40000000000000"\_"16"\), 18014398509481984, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000000000"\_"16"\), 18014398509481984, Editable->False], (BaseForm[ #, 16]&)]}, {"10", TagBox[ InterpretationBox[\("20000000000000"\_"16"\), 9007199254740992, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000000000"\_"16"\), 9007199254740992, Editable->False], (BaseForm[ #, 16]&)]}, {"11", TagBox[ InterpretationBox[\("10000000000000"\_"16"\), 4503599627370496, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000000000"\_"16"\), 4503599627370496, Editable->False], (BaseForm[ #, 16]&)]}, {"12", TagBox[ InterpretationBox[\("8000000000000"\_"16"\), 2251799813685248, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000000"\_"16"\), 2251799813685248, Editable->False], (BaseForm[ #, 16]&)]}, {"13", TagBox[ InterpretationBox[\("4000000000000"\_"16"\), 1125899906842624, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000000"\_"16"\), 1125899906842624, Editable->False], (BaseForm[ #, 16]&)]}, {"14", TagBox[ InterpretationBox[\("2000000000000"\_"16"\), 562949953421312, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000000"\_"16"\), 562949953421312, Editable->False], (BaseForm[ #, 16]&)]}, {"15", TagBox[ InterpretationBox[\("1000000000000"\_"16"\), 281474976710656, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000000"\_"16"\), 281474976710656, Editable->False], (BaseForm[ #, 16]&)]}, {"16", TagBox[ InterpretationBox[\("800000000000"\_"16"\), 140737488355328, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000000"\_"16"\), 140737488355328, Editable->False], (BaseForm[ #, 16]&)]}, {"17", TagBox[ InterpretationBox[\("400000000000"\_"16"\), 70368744177664, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000000"\_"16"\), 70368744177664, Editable->False], (BaseForm[ #, 16]&)]}, {"18", TagBox[ InterpretationBox[\("200000000000"\_"16"\), 35184372088832, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000"\_"16"\), 35184372088832, Editable->False], (BaseForm[ #, 16]&)]}, {"19", TagBox[ InterpretationBox[\("100000000000"\_"16"\), 17592186044416, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000"\_"16"\), 17592186044416, Editable->False], (BaseForm[ #, 16]&)]}, {"20", TagBox[ InterpretationBox[\("80000000000"\_"16"\), 8796093022208, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000000"\_"16"\), 8796093022208, Editable->False], (BaseForm[ #, 16]&)]}, {"21", TagBox[ InterpretationBox[\("40000000000"\_"16"\), 4398046511104, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000000"\_"16"\), 4398046511104, Editable->False], (BaseForm[ #, 16]&)]}, {"22", TagBox[ InterpretationBox[\("20000000000"\_"16"\), 2199023255552, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000000"\_"16"\), 2199023255552, Editable->False], (BaseForm[ #, 16]&)]}, {"23", TagBox[ InterpretationBox[\("10000000000"\_"16"\), 1099511627776, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000000"\_"16"\), 1099511627776, Editable->False], (BaseForm[ #, 16]&)]}, {"24", TagBox[ InterpretationBox[\("8000000000"\_"16"\), 549755813888, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000000"\_"16"\), 549755813888, Editable->False], (BaseForm[ #, 16]&)]}, {"25", TagBox[ InterpretationBox[\("4000000000"\_"16"\), 274877906944, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000000"\_"16"\), 274877906944, Editable->False], (BaseForm[ #, 16]&)]}, {"26", TagBox[ InterpretationBox[\("2000000000"\_"16"\), 137438953472, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000000"\_"16"\), 137438953472, Editable->False], (BaseForm[ #, 16]&)]}, {"27", TagBox[ InterpretationBox[\("1000000000"\_"16"\), 68719476736, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000"\_"16"\), 68719476736, Editable->False], (BaseForm[ #, 16]&)]}, {"28", TagBox[ InterpretationBox[\("800000000"\_"16"\), 34359738368, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000000"\_"16"\), 34359738368, Editable->False], (BaseForm[ #, 16]&)]}, {"29", TagBox[ InterpretationBox[\("400000000"\_"16"\), 17179869184, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000000"\_"16"\), 17179869184, Editable->False], (BaseForm[ #, 16]&)]}, {"30", TagBox[ InterpretationBox[\("200000000"\_"16"\), 8589934592, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000"\_"16"\), 8589934592, Editable->False], (BaseForm[ #, 16]&)]}, {"31", TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)]}, {"32", TagBox[ InterpretationBox[\("80000000"\_"16"\), 2147483648, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000000"\_"16"\), 2147483648, Editable->False], (BaseForm[ #, 16]&)]}, {"33", TagBox[ InterpretationBox[\("40000000"\_"16"\), 1073741824, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000000"\_"16"\), 1073741824, Editable->False], (BaseForm[ #, 16]&)]}, {"34", TagBox[ InterpretationBox[\("20000000"\_"16"\), 536870912, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000000"\_"16"\), 536870912, Editable->False], (BaseForm[ #, 16]&)]}, {"35", TagBox[ InterpretationBox[\("10000000"\_"16"\), 268435456, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000"\_"16"\), 268435456, Editable->False], (BaseForm[ #, 16]&)]}, {"36", TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000000"\_"16"\), 134217728, Editable->False], (BaseForm[ #, 16]&)]}, {"37", TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000000"\_"16"\), 67108864, Editable->False], (BaseForm[ #, 16]&)]}, {"38", TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)]}, {"39", TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)]}, {"40", TagBox[ InterpretationBox[\("800000"\_"16"\), 8388608, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800000"\_"16"\), 8388608, Editable->False], (BaseForm[ #, 16]&)]}, {"41", TagBox[ InterpretationBox[\("400000"\_"16"\), 4194304, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400000"\_"16"\), 4194304, Editable->False], (BaseForm[ #, 16]&)]}, {"42", TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000"\_"16"\), 2097152, Editable->False], (BaseForm[ #, 16]&)]}, {"43", TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000"\_"16"\), 1048576, Editable->False], (BaseForm[ #, 16]&)]}, {"44", TagBox[ InterpretationBox[\("80000"\_"16"\), 524288, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80000"\_"16"\), 524288, Editable->False], (BaseForm[ #, 16]&)]}, {"45", TagBox[ InterpretationBox[\("40000"\_"16"\), 262144, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40000"\_"16"\), 262144, Editable->False], (BaseForm[ #, 16]&)]}, {"46", TagBox[ InterpretationBox[\("20000"\_"16"\), 131072, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20000"\_"16"\), 131072, Editable->False], (BaseForm[ #, 16]&)]}, {"47", TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)]}, {"48", TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8000"\_"16"\), 32768, Editable->False], (BaseForm[ #, 16]&)]}, {"49", TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4000"\_"16"\), 16384, Editable->False], (BaseForm[ #, 16]&)]}, {"50", TagBox[ InterpretationBox[\("2000"\_"16"\), 8192, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000"\_"16"\), 8192, Editable->False], (BaseForm[ #, 16]&)]}, {"51", TagBox[ InterpretationBox[\("1000"\_"16"\), 4096, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000"\_"16"\), 4096, Editable->False], (BaseForm[ #, 16]&)]}, {"52", TagBox[ InterpretationBox[\("800"\_"16"\), 2048, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("800"\_"16"\), 2048, Editable->False], (BaseForm[ #, 16]&)]}, {"53", TagBox[ InterpretationBox[\("400"\_"16"\), 1024, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("400"\_"16"\), 1024, Editable->False], (BaseForm[ #, 16]&)]}, {"54", TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200"\_"16"\), 512, Editable->False], (BaseForm[ #, 16]&)]}, {"55", TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)]}, {"56", TagBox[ InterpretationBox[\("80"\_"16"\), 128, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("80"\_"16"\), 128, Editable->False], (BaseForm[ #, 16]&)]}, {"57", TagBox[ InterpretationBox[\("40"\_"16"\), 64, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("40"\_"16"\), 64, Editable->False], (BaseForm[ #, 16]&)]}, {"58", TagBox[ InterpretationBox[\("20"\_"16"\), 32, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("20"\_"16"\), 32, Editable->False], (BaseForm[ #, 16]&)]}, {"59", TagBox[ InterpretationBox[\("10"\_"16"\), 16, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10"\_"16"\), 16, Editable->False], (BaseForm[ #, 16]&)]}, {"60", TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("8"\_"16"\), 8, Editable->False], (BaseForm[ #, 16]&)]}, {"61", TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("4"\_"16"\), 4, Editable->False], (BaseForm[ #, 16]&)]}, {"62", TagBox[ InterpretationBox[\("2"\_"16"\), 2, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2"\_"16"\), 2, Editable->False], (BaseForm[ #, 16]&)]}, {"63", TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {"Round", "PT", "IPInv[IP[PT]]"}}]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Map[{#, BaseForm[FromDigits[RotateRight[pt, #], 2], 16], BaseForm[FromDigits[IP[RotateRight[pt, #]], 2], 16]} &, Range[0, 63]], TableHeadings \[Rule] {None, {"\", "\", \ "\"}}]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {"\<\"Round\"\>", "\<\"PT\"\>", "\<\"IP[PT]\"\>"}, {"0", TagBox[ InterpretationBox[\("8000000000000000"\_"16"\), 9223372036854775808, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000"\_"16"\), 16777216, Editable->False], (BaseForm[ #, 16]&)]}, {"1", TagBox[ InterpretationBox[\("4000000000000000"\_"16"\), 4611686018427387904, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)]}, {"2", TagBox[ InterpretationBox[\("2000000000000000"\_"16"\), 2305843009213693952, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000"\_"16"\), 65536, Editable->False], (BaseForm[ #, 16]&)]}, {"3", TagBox[ InterpretationBox[\("1000000000000000"\_"16"\), 1152921504606846976, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1000000000000"\_"16"\), 281474976710656, Editable->False], (BaseForm[ #, 16]&)]}, {"4", TagBox[ InterpretationBox[\("800000000000000"\_"16"\), 576460752303423488, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100"\_"16"\), 256, Editable->False], (BaseForm[ #, 16]&)]}, {"5", TagBox[ InterpretationBox[\("400000000000000"\_"16"\), 288230376151711744, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("10000000000"\_"16"\), 1099511627776, Editable->False], (BaseForm[ #, 16]&)]}, {"6", TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("1"\_"16"\), 1, Editable->False], (BaseForm[ #, 16]&)]}, {"7", TagBox[ InterpretationBox[\("100000000000000"\_"16"\), 72057594037927936, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("100000000"\_"16"\), 4294967296, Editable->False], (BaseForm[ #, 16]&)]}, {"8", TagBox[ InterpretationBox[\("80000000000000"\_"16"\), 36028797018963968, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("2000000"\_"16"\), 33554432, Editable->False], (BaseForm[ #, 16]&)]}, {"9", TagBox[ InterpretationBox[\("40000000000000"\_"16"\), 18014398509481984, Editable->False], (BaseForm[ #, 16]&)], TagBox[ InterpretationBox[\("200000000000000"\_"16"\), 144115188075855872, Editable->False],