(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     50086,       1298]
NotebookOptionsPosition[     39909,       1111]
NotebookOutlinePosition[     42096,       1162]
CellTagsIndexPosition[     42018,       1157]
WindowTitle->BIP39Seed
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "716a1e67-ec4a-444d-9ce6-1e9d2553adf5"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "bd620663-3bfa-43b9-93cb-53944b174096"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "93a79828-7173-4c23-b30c-c67643d51b64"]
         }],ExpressionUUID->"5e8be28c-a214-4f27-812e-e2fd12f63a8b"],
         StripOnInput->False],{
        StyleBox[
          "\"BIP39Mnemonic\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BIP39Mnemonic"], 
         StyleBox[
          "\"BIP39Entropy\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BIP39Entropy"], 
         StyleBox[
          "\"BIP39MnemonicQ\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BIP39MnemonicQ"], 
         StyleBox["\"PBKDF2Key\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/PBKDF2Key"], 
         StyleBox[
          "\"ElectrumV2Seed\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ElectrumV2Seed"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "242872c1-bcf7-45c6-8cdf-15de40798ba3"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "4815b4b8-6fae-4b65-8fb4-83d2357958e9"]
         }],ExpressionUUID->"976940a8-f1dd-4695-97b6-57a6cb20fb15"],
         StripOnInput->False],{
        "\"Seeds\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Seeds"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "3a487c92-3f06-4185-a628-8c99ebae2b98"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "d75dd112-4a39-4df5-beb4-5af1781f6736"]
         }],ExpressionUUID->"5b36fea9-be86-44a6-b918-5855b6e519f5"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/BIP39Seed\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/BIP39Seed"], Delimiter,
          "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/BIP39Seed.html"], StandardForm]], "Input", TextClipboardType -> 
                 "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/BIP39Seed" <> ".html"], None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "c36195d9-3d1c-4adb-b6d3-215124c5dd28"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "b454b785-3615-4bff-8309-d1f4a80206c7"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"637961d6-d09f-41b5-b730-6ead80e9c687"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"877bac1a-6e22-4067-97a6-9b4ccaa23124"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "BIP39Seed", "ObjectName",ExpressionUUID->
      "73167275-3853-4631-b801-851a64b4e00a"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"e77a9695-a1bf-43dc-9a5f-a154f5c12950"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "9f074600-3149-4186-8b19-891ace76f963"]
    }],ExpressionUUID->"951ddabd-3af7-4aea-b225-ccd35d4e4260"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"22dac623-e3c1-43a3-bd89-\
1c0c09af7137"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["BIP39Seed"]], 
         "paclet:WolframInstitute/Puzzles/ref/BIP39Seed", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["mnemonic", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "3269731e-cad5-45ab-9dbf-828a7ff2648a"],
     "\[LineSeparator]",
     "gives the 64-byte BIP39 seed of ",
     StyleBox["mnemonic", "TI"],
     " as a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["ByteArray"]], "paclet:ref/ByteArray"},
       "RefLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",ExpressionUUID->
      "4555dc07-25b8-4091-86a3-84d07bb7e02a"],
     "."
    }],ExpressionUUID->"c348a6a9-eabd-4531-a1c8-fdd1ef34ae07"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["BIP39Seed"]], 
         "paclet:WolframInstitute/Puzzles/ref/BIP39Seed", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["mnemonic", "TI"], ",", " ", 
        StyleBox["passphrase", "TI"]}], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "31c78657-da1e-4834-abf3-3ddca14205d3"],
     "\[LineSeparator]",
     "applies the optional BIP39 passphrase, the \"25th word\"."
    }],ExpressionUUID->"2962fc7f-4d11-4353-9e80-ef9c4442ee2a"]}
  }]], "Usage",ExpressionUUID->"6a0a0f2c-f3ca-4754-8c29-d6dd7d11f162"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"c0c5c59f-e7f9-4093-9c7e-945145dec21e"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"aed52cb3-cb44-41c0-8a61-5c1dcb0f1d46"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "e24b295b-6673-4d09-9275-adb61fcca386"]],ExpressionUUID->"fba6383a-9317-\
4c66-9fbe-0ca5338a5951"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1332363566,ExpressionUUID->"39d4121f-da9d-4dca-8310-5c5b744b14aa"],

Cell[TextData[{
 "The seed is PBKDF2 with HMAC-SHA512, 2048 iterations and a 512-bit output, \
taking the NFKD-normalized mnemonic as password and ",
 Cell[BoxData["\<\"mnemonic\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "aa9c6889-af43-46a2-9cbe-f85ff9c1e7d5"],
 " followed by the NFKD-normalized passphrase as salt."
}], "Notes",ExpressionUUID->"304c6ace-09e0-4ed8-b377-a11719cb3089"],

Cell[TextData[{
 StyleBox["mnemonic", "TI"],
 " may be a string or a list of words, and may be in any BIP39 language. NFKD \
normalization is what makes the Japanese vectors, whose words are separated \
by the ideographic space U+3000, derive correctly."
}], "Notes",ExpressionUUID->"4d2fb095-2965-49b5-b9b9-0faedc4cd762"],

Cell[TextData[{
 "No wordlist is consulted and no checksum is required: BIP39 defines the \
seed function for any sentence, and a phrase that fails ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39MnemonicQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/BIP39MnemonicQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c42e9447-bee8-4ebc-a312-b4dbf6c357ff"],
 " still has a seed. This is the behavior a puzzle sweep relies on."
}], "Notes",ExpressionUUID->"2699a400-091a-4da8-a512-9d00b81c7bd7"],

Cell[TextData[{
 "Passing no passphrase is the same as passing ",
 Cell[BoxData["\<\"\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "0f1440c3-ac3d-46e0-bbf1-81884c91d224"],
 "."
}], "Notes",ExpressionUUID->"9bd33768-93f0-4c1e-af87-d4c4a13ed383"],

Cell["\<\
The passphrase is not a recovery aid. A different passphrase gives a \
completely different wallet from the same words, with no way to tell a wrong \
one from a right one except by looking for funds.\
\>", "Notes",ExpressionUUID->"ced14eb3-a435-48ca-88a5-7eed02bdab32"],

Cell["\<\
The result is the BIP32 seed: feed it to the master key derivation in the \
Derivation guide.\
\>", "Notes",ExpressionUUID->"64e04073-6ff3-42a4-b1f2-ef56b521135d"],

Cell["\<\
One call costs about 0.7 ms, so a sweep runs at roughly 1500 seeds a second.\
\>", "Notes",ExpressionUUID->"46c8f211-2409-4dab-934f-cbf0f0139c58"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"e8d2639c-5fb9-4550-ae45-2c13d95d5a96"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"a28b6033-55d5-4557-8daf-6ede41c179ca"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"7bb0aa61-6c7a-4e40-a003-7ad2d3aa18cf"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(13)", "ExampleCount",ExpressionUUID->
  "68fc5694-6162-4121-b465-ae5138d52b7e"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1222466493,ExpressionUUID->"72c705e2-6424-4d85-99af-d4316bfdeb2b"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"ee601db9-0e39-498e-8a76-26966cf76cc6"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "21e87488-f1f5-438b-bf30-4f2559d7e098"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"ccd31f7a-1239-4c51-88d7-a2222ebc483e"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "318d81ca-386c-403c-89c6-83b918a2597c"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1018297002,ExpressionUUID->"0a46ff5f-304d-4bf2-b385-fe403597143f"],

Cell[TextData[{
 "The seed of the first official BIP39 test vector under the vectors' \
passphrase ",
 Cell[BoxData["\<\"TREZOR\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "9162a3e1-4719-4cd1-9648-27975b5c372c"],
 ":"
}], "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"8497ce67-6748-4778-9a00-979317cd0b35"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteListToHexString", "[", 
  RowBox[{"BIP39Seed", "[", 
   RowBox[{"\"\<abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\>\"", ",", " ", "\"\<TREZOR\>\""}], 
   "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4041a1fd-d194-4f9a-b3fc-ec275c306df4"],

Cell[BoxData["\<\"\
c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d1\
8264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"67127feb-e0b9-49e1-921d-bd1f4a33e689"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "19f7e166-e5bd-43ce-a37a-7053657e1dce"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"79684e86-1ec0-4e2c-\
b0b8-61370095d7ee"],

Cell["\<\
Without a passphrase the same words give a different seed, and a different \
wallet:\
\>", "ExampleText",ExpressionUUID->"8c5dd4ab-fb12-47e7-8b7c-d131953bc772"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteListToHexString", "[", 
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<abandon abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon about\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"7a58a494-ee55-474a-b458-9992c3a2fb2a"],

Cell[BoxData["\<\"\
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd3\
70d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d9ac3357-45ca-4e03-b192-6b49b84a48b4"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "e369c46a-d040-4408-a5c4-f8aff097185e"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3e0b5490-cb15-4413-\
89e5-40a95b6e8eb7"],

Cell["The seed is always 64 bytes, whatever the word count:", "ExampleText",ExpressionUUID->"d76200b2-aedf-4c38-9357-df445f938c14"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", 
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<void come effort suffer camp survey warrior heavy shoot primary \
clutch crush open amazing screen patrol group space point ten exist slush \
involve unfold\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"53609983-05ae-4f40-91b9-c217e5119e8b"],

Cell[BoxData["64"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"4b729952-3b2d-44c0-b07c-30eaf389ba98"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "c486f4a1-5680-4158-8ab5-da5657306441"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"61be60e4-cf29-4ba4-b55b-2bf710ea08d6"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "265de2e6-9a8c-44d8-a6a5-b34788a9d59b"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"45dcec18-7cc0-461c-96dc-191fb68302cb"],

Cell["\<\
A mnemonic given as a list of words is joined with single spaces:\
\>", "ExampleText",ExpressionUUID->"263a43e1-ce76-446c-92de-38fc2e716fe0"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"BIP39Seed", "[", 
   RowBox[{"{", 
    RowBox[{"\"\<legal\>\"", ",", " ", "\"\<winner\>\"", ",", 
     " ", "\"\<thank\>\"", ",", " ", "\"\<year\>\"", ",", " ", "\"\<wave\>\"",
      ",", " ", "\"\<sausage\>\"", ",", " ", "\"\<worth\>\"", ",", 
     " ", "\"\<useful\>\"", ",", " ", "\"\<legal\>\"", ",", 
     " ", "\"\<winner\>\"", ",", " ", "\"\<thank\>\"", ",", 
     " ", "\"\<yellow\>\""}], "}"}], "]"}], " ", "===", " ", 
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<legal winner thank year wave sausage worth useful legal winner \
thank yellow\>\"", "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"c845ebab-55d6-4d8d-87f6-110a8116749c"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"4d7c3def-d16a-4fad-aa8d-05a8df9746d5"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "3a4a1ad5-5bcf-4e7c-8dfd-c579b71ae807"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"dfbf1d8f-da8b-45b9-\
9402-0a7aaf7890b6"],

Cell["\<\
A Japanese mnemonic separated by ideographic spaces derives correctly, \
because NFKD folds U+3000 to an ordinary space:\
\>", "ExampleText",ExpressionUUID->"b3bf721f-1607-4b62-9b29-9fe8da6b1875"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteListToHexString", "[", 
  RowBox[{"BIP39Seed", "[", 
   RowBox[{
    RowBox[{"StringRiffle", "[", 
     RowBox[{
      RowBox[{"Join", "[", 
       RowBox[{
        RowBox[{"ConstantArray", "[", 
         RowBox[{
          RowBox[{"FromCharacterCode", "[", 
           RowBox[{"{", 
            RowBox[{
            "12354", ",", " ", "12356", ",", " ", "12371", ",", " ", "12367", 
             ",", " ", "12375", ",", " ", "12435"}], "}"}], "]"}], ",", " ", 
          "11"}], "]"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{"FromCharacterCode", "[", 
          RowBox[{"{", 
           RowBox[{
           "12354", ",", " ", "12362", ",", " ", "12382", ",", " ", "12425"}],
            "}"}], "]"}], "}"}]}], "]"}], ",", " ", 
      RowBox[{"FromCharacterCode", "[", "12288", "]"}]}], "]"}], ",", 
    " ", "\"\<TREZOR\>\""}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1b34c0dd-ec46-46ea-a8f9-a12711c46a62"],

Cell[BoxData["\<\"\
5a6c23b5abdd5c3e1f7d77ad25ecd715647bdafb44dab324c730a76a45d7421daccee1a4ff0739\
715a2c56a8a9f1e527a5e3496224d91293bfcd9b5393bfff83\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d2112569-a20b-4b9e-8ad2-f1d7a73d259f"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "be413844-c132-4cc4-b2e1-aadf2e664f7d"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"59bef0b9-8c4d-4573-\
8b43-c06e12e91c05"],

Cell["\<\
A sentence that is not a BIP39 mnemonic at all still has a seed:\
\>", "ExampleText",ExpressionUUID->"fe2a4a08-c27a-411c-823d-e8f3af91813d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteListToHexString", "[", 
  RowBox[{"BIP39Seed", "[", "\"\<this is not a bip39 mnemonic\>\"", "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5c7e5a10-4e14-4c7b-830c-a555123d96c7"],

Cell[BoxData["\<\"\
ab430eae5613269d7e471ef9596f0756ef5c02ddbc5bb293ee5a83fe93449bb97bba0003a36eb6\
3f022114c2ead6f30d4930150324bf50cf0962ba650da7ba6f\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d48397fa-6f11-4efc-a9ef-b7b9ed4bc186"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "093b5965-2a1e-418c-a68a-caa3e8ae3a94"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"64c96784-ea06-44f8-b43e-41796ca440f8"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "31c8a062-3ad9-490d-a0fe-c1ed667a3c58"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"0018885a-f6dd-4907-819f-dbbf7be7b18d"],

Cell["\<\
Sweeping a passphrase list over one recovered phrase is a map over the second \
argument:\
\>", "ExampleText",ExpressionUUID->"024fe577-0162-42a0-80ad-e69e6153dc8c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Column", "[", 
  RowBox[{"Map", "[", 
   RowBox[{
    RowBox[{"Function", "[", 
     RowBox[{"p", ",", " ", 
      RowBox[{"p", " ", "->", " ", 
       RowBox[{"StringTake", "[", 
        RowBox[{
         RowBox[{"ByteListToHexString", "[", 
          RowBox[{"BIP39Seed", "[", 
           
           RowBox[{"\"\<abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon abandon about\>\"", ",", " ", "p"}], "]"}], 
          "]"}], ",", " ", "16"}], "]"}]}]}], "]"}], ",", " ", 
    RowBox[{"{", 
     RowBox[{"\"\<\>\"", ",", " ", "\"\<TREZOR\>\"", ",", 
      " ", "\"\<trezor\>\"", ",", " ", "\"\<satoshi\>\""}], "}"}]}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1771d176-188d-4b87-8a99-ef45d938b5db"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"\<\"\"\>", "\[Rule]", "\<\"5eb00bbddcf06908\"\>"}]},
    {
     RowBox[{"\<\"TREZOR\"\>", "\[Rule]", "\<\"c55257c360c07c72\"\>"}]},
    {
     RowBox[{"\<\"trezor\"\>", "\[Rule]", "\<\"f5057546039282b5\"\>"}]},
    {
     RowBox[{"\<\"satoshi\"\>", "\[Rule]", "\<\"c735f0298a9353a4\"\>"}]}
   },
   DefaultBaseStyle->"Column",
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3dc71836-4f12-47c2-9ecd-1a0059a73614"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "373ddae5-19ce-43b1-b565-3c92dd9d8d82"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3663d036-fc64-429e-\
a147-7d219319db25"],

Cell["\<\
Timing one derivation shows what a sweep costs per candidate:\
\>", "ExampleText",ExpressionUUID->"b1370432-340e-4eb0-b11b-b4e1bedd9694"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"First", "[", 
   RowBox[{"AbsoluteTiming", "[", 
    RowBox[{"BIP39Seed", "[", 
     RowBox[{"\"\<abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\>\"", ",", " ", "\"\<timing\>\""}], 
     "]"}], "]"}], "]"}], " ", "<", " ", "0.1"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"867a5717-cd1b-447c-9c93-07a5fd3f3128"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"afc8318c-e6ff-498d-89bb-a1def08e3c15"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "16de7dbe-87e2-4d92-900d-714215bea312"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"f6419b42-3f20-47ed-8aa9-4654a2c857f3"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "afcd2666-f015-422c-bc4c-9b747be2effb"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"9ed0932c-0ef6-413c-b243-daa771aa31ad"],

Cell[TextData[{
 "The seed is ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PBKDF2Key"]], "paclet:WolframInstitute/Puzzles/ref/PBKDF2Key", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7c7c6903-fcf5-4ccb-850d-fd4be57810a3"],
 " with the BIP39 parameters filled in:"
}], "ExampleText",ExpressionUUID->"158016f2-4932-44c2-9a11-67588157fac9"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"BIP39Seed", "[", 
   RowBox[{"\"\<abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\>\"", ",", " ", "\"\<TREZOR\>\""}], 
   "]"}], " ", "===", " ", 
  RowBox[{"PBKDF2Key", "[", 
   RowBox[{"\"\<abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\>\"", ",", " ", "\"\<mnemonicTREZOR\>\"",
     ",", " ", "2048", ",", " ", "64"}], "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"087c35a1-62d5-4023-bd15-22b239a3c7c3"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"05a34e3b-f464-4b2e-926d-e7acb9673ebd"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "d47f8658-1666-4c41-b8a3-c19ee67c6a35"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"795ec6a0-a41d-462c-\
931e-0f8d347d70b3"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV2Seed"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV2Seed", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3052eb2c-c6b9-44e6-938a-dbf47c27d1eb"],
 " is the same derivation with ",
 Cell[BoxData["\<\"electrum\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "9957956f-9472-4093-b71a-45ed3b7a91dd"],
 " in place of ",
 Cell[BoxData["\<\"mnemonic\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "bca94f7f-2d60-436d-a650-fafae5db166f"],
 ", so the two disagree on the same words:"
}], "ExampleText",ExpressionUUID->"b55e738c-d7c3-4ec2-bb66-9698cc842f9f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<wild father tree among universe such mobile favorite target \
dynamic credit identify\>\"", "]"}], " ", "===", " ", 
  RowBox[{
  "ElectrumV2Seed", 
   "[", "\"\<wild father tree among universe such mobile favorite target \
dynamic credit identify\>\"", "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"cd77e16b-8860-4686-90c5-698894854496"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a9ddedce-f365-4300-98a1-7f008fd44241"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "59b794e4-559a-4a24-ae55-ac1b0ca4490f"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"505042de-7f07-4b95-\
a768-f14447eddefd"],

Cell["\<\
The seed does not go through the entropy, so two mnemonics with the same \
entropy but different spelling are different seeds:\
\>", "ExampleText",ExpressionUUID->"3a5dbf90-e92d-48cb-9cd8-c46f376c185b"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<abandon abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon about\>\"", "]"}], " ", "===", " ", 
  RowBox[{
  "BIP39Seed", 
   "[", "\"\<ABANDON abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon about\>\"", "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"85ea4227-94c7-4c93-9e98-2ef54cebaef0"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c6569d0e-70b1-4155-94b6-4ebed58b9422"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "cc5fd6dc-a3ab-449d-80d8-b5dc3bc01c16"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"d2d4b173-de72-4a52-95eb-7eb3d22e62b8"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "c77ffa2e-a841-46ac-b58c-26f439379f89"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"356bba6b-d8ca-47be-a837-e929eb16ab30"],

Cell["\<\
The passphrase silently produces a valid but different wallet, so a typo in \
it is undetectable from the seed alone:\
\>", "ExampleText",ExpressionUUID->"bdc9bd1b-cc3b-4236-a431-52cb6d67f5c0"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"StringTake", "[", 
  RowBox[{
   RowBox[{"ByteListToHexString", "[", 
    RowBox[{"BIP39Seed", "[", 
     RowBox[{"\"\<abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\>\"", ",", " ", "\"\<TREZOR \>\""}], 
     "]"}], "]"}], ",", " ", "32"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4a854850-29b4-437b-a3df-6962dbd98e78"],

Cell[BoxData["\<\"9d970e6454c54edc6e22391edcf27a07\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"5f1151bb-5f7c-4060-9cda-152fa9cfc8c3"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "2477674d-4aa3-4aec-9dba-c991a531c3e9"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"8f269187-6d77-4419-\
be23-27a0a0cecebd"],

Cell["\<\
An argument that is not a string or a list of words matches no definition:\
\>", "ExampleText",ExpressionUUID->"84c4b4e0-e131-416a-befc-f24915dfde21"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"BIP39Seed", "[", "42", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"379abedc-a7ac-4fec-86f0-3baf989edc8d"],

Cell[BoxData[
 RowBox[{"BIP39Seed", "[", "42", "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a622063a-0fac-4e87-9f27-4c079fec4bad"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BIP39Mnemonic"]], 
           "paclet:WolframInstitute/Puzzles/ref/BIP39Mnemonic", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "4f3a62b8-d220-42ec-a8d8-5b7e235adbb4"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BIP39Entropy"]], 
           "paclet:WolframInstitute/Puzzles/ref/BIP39Entropy", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "bc0f6ae5-5272-4f0d-aded-dc9b5f49145b"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BIP39MnemonicQ"]], 
           "paclet:WolframInstitute/Puzzles/ref/BIP39MnemonicQ", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "5da8c7c8-79a8-447a-b055-1a2aafe47f3f"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["PBKDF2Key"]], 
           "paclet:WolframInstitute/Puzzles/ref/PBKDF2Key", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "d96c3017-3b25-4854-8a1a-08054f967dd4"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ElectrumV2Seed"]], 
           "paclet:WolframInstitute/Puzzles/ref/ElectrumV2Seed", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "a4b3290b-e35f-415f-8812-0c70a274798c"]
       }], "SeeAlso",ExpressionUUID->"fb61b9ff-f592-4849-aa63-0a278c9f9b60"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"52f2aa09-9dcf-4bea-bf07-\
afe21b6bf3f7"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Seeds"]], "paclet:WolframInstitute/Puzzles/guide/Seeds"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "188a777b-f3e2-492f-bb16-2f91e47f5cf4"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"dc2b3d42-8b47-465f-aced-\
16012858cf53"],

Cell[" ", "FooterCell",ExpressionUUID->"53fd6c9e-7b3e-43d5-af6e-0a5baaa5b4a2"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"BIP39Seed",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 10.699947}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[BIP39Seed,paclet : WolframInstitute/Puzzles/ref/BIP39Seed, \
WolframInstitute/Puzzles Package Symbol][mnemonic] gives the 64-byte BIP39 \
seed of mnemonic as a ByteArray. PackageLink[BIP39Seed,paclet : \
WolframInstitute/Puzzles/ref/BIP39Seed, WolframInstitute/Puzzles Package \
Symbol][mnemonic, passphrase] applies the optional BIP39 passphrase, the 25th \
word.", "synonyms" -> {}, "tabletags" -> {}, "title" -> "BIP39Seed", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "BIP39Seed", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/BIP39Seed", "WorkflowDockedCell" -> ""}, 
  "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"7407d1a5-b87e-45c6-87fa-d312ce7cf09f"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[15636, 416, 381, 10, 70, "ExampleText",ExpressionUUID->"8497ce67-6748-4778-9a00-979317cd0b35",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 41860, 1151}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[577, 21, 5748, 141, 70, "AnchorBarGrid",ExpressionUUID->"637961d6-d09f-41b5-b730-6ead80e9c687",
 CellID->1],
Cell[6328, 164, 107, 0, 70, "ContextNameCell",ExpressionUUID->"877bac1a-6e22-4067-97a6-9b4ccaa23124"],
Cell[CellGroupData[{
Cell[6460, 168, 552, 14, 70, "ObjectNameGrid",ExpressionUUID->"22dac623-e3c1-43a3-bd89-1c0c09af7137"],
Cell[7015, 184, 1782, 48, 70, "Usage",ExpressionUUID->"6a0a0f2c-f3ca-4754-8c29-d6dd7d11f162"]
}, Open  ]],
Cell[CellGroupData[{
Cell[8834, 237, 1444, 34, 70, "NotesSection",ExpressionUUID->"39d4121f-da9d-4dca-8310-5c5b744b14aa",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1332363566],
Cell[10281, 273, 444, 8, 70, "Notes",ExpressionUUID->"304c6ace-09e0-4ed8-b377-a11719cb3089"],
Cell[10728, 283, 322, 5, 70, "Notes",ExpressionUUID->"4d2fb095-2965-49b5-b9b9-0faedc4cd762"],
Cell[11053, 290, 657, 15, 70, "Notes",ExpressionUUID->"2699a400-091a-4da8-a512-9d00b81c7bd7"],
Cell[11713, 307, 301, 7, 70, "Notes",ExpressionUUID->"9bd33768-93f0-4c1e-af87-d4c4a13ed383"],
Cell[12017, 316, 279, 4, 70, "Notes",ExpressionUUID->"ced14eb3-a435-48ca-88a5-7eed02bdab32"],
Cell[12299, 322, 173, 3, 70, "Notes",ExpressionUUID->"64e04073-6ff3-42a4-b1f2-ef56b521135d"],
Cell[12475, 327, 156, 2, 70, "Notes",ExpressionUUID->"46c8f211-2409-4dab-934f-cbf0f0139c58"]
}, Closed]],
Cell[12646, 332, 80, 0, 70, "PageDelimiter",ExpressionUUID->"e8d2639c-5fb9-4550-ae45-2c13d95d5a96"],
Cell[CellGroupData[{
Cell[12751, 336, 1402, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"72c705e2-6424-4d85-99af-d4316bfdeb2b",
 CellID->1222466493],
Cell[14156, 375, 216, 4, 70, "Input",ExpressionUUID->"ee601db9-0e39-498e-8a76-26966cf76cc6",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[14397, 383, 1236, 31, 70, "ExampleSection",ExpressionUUID->"0a46ff5f-304d-4bf2-b385-fe403597143f",
 CellID->1018297002],
Cell[15636, 416, 381, 10, 70, "ExampleText",ExpressionUUID->"8497ce67-6748-4778-9a00-979317cd0b35",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[16042, 430, 383, 7, 70, "Input",ExpressionUUID->"4041a1fd-d194-4f9a-b3fc-ec275c306df4"],
Cell[16428, 439, 246, 3, 70, "Output",ExpressionUUID->"67127feb-e0b9-49e1-921d-bd1f4a33e689"]
}, Open  ]],
Cell[CellGroupData[{
Cell[16711, 447, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"79684e86-1ec0-4e2c-b0b8-61370095d7ee"],
Cell[16938, 454, 170, 3, 70, "ExampleText",ExpressionUUID->"8c5dd4ab-fb12-47e7-8b7c-d131953bc772"],
Cell[CellGroupData[{
Cell[17133, 461, 344, 7, 70, "Input",ExpressionUUID->"7a58a494-ee55-474a-b458-9992c3a2fb2a"],
Cell[17480, 470, 246, 3, 70, "Output",ExpressionUUID->"d9ac3357-45ca-4e03-b192-6b49b84a48b4"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[17775, 479, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3e0b5490-cb15-4413-89e5-40a95b6e8eb7"],
Cell[18002, 486, 131, 0, 70, "ExampleText",ExpressionUUID->"d76200b2-aedf-4c38-9357-df445f938c14"],
Cell[CellGroupData[{
Cell[18158, 490, 392, 8, 70, "Input",ExpressionUUID->"53609983-05ae-4f40-91b9-c217e5119e8b"],
Cell[18553, 500, 108, 1, 70, "Output",ExpressionUUID->"4b729952-3b2d-44c0-b07c-30eaf389ba98"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[18722, 508, 1227, 31, 70, "ExampleSection",ExpressionUUID->"45dcec18-7cc0-461c-96dc-191fb68302cb",
 CellID->1293636265],
Cell[19952, 541, 151, 2, 70, "ExampleText",ExpressionUUID->"263a43e1-ce76-446c-92de-38fc2e716fe0"],
Cell[CellGroupData[{
Cell[20128, 547, 733, 15, 70, "Input",ExpressionUUID->"c845ebab-55d6-4d8d-87f6-110a8116749c"],
Cell[20864, 564, 110, 1, 70, "Output",ExpressionUUID->"4d7c3def-d16a-4fad-aa8d-05a8df9746d5"]
}, Open  ]],
Cell[CellGroupData[{
Cell[21011, 570, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"dfbf1d8f-da8b-45b9-9402-0a7aaf7890b6"],
Cell[21238, 577, 206, 3, 70, "ExampleText",ExpressionUUID->"b3bf721f-1607-4b62-9b29-9fe8da6b1875"],
Cell[CellGroupData[{
Cell[21469, 584, 1018, 25, 70, "Input",ExpressionUUID->"1b34c0dd-ec46-46ea-a8f9-a12711c46a62"],
Cell[22490, 611, 246, 3, 70, "Output",ExpressionUUID->"d2112569-a20b-4b9e-8ad2-f1d7a73d259f"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[22785, 620, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"59bef0b9-8c4d-4573-8b43-c06e12e91c05"],
Cell[23012, 627, 150, 2, 70, "ExampleText",ExpressionUUID->"fe2a4a08-c27a-411c-823d-e8f3af91813d"],
Cell[CellGroupData[{
Cell[23187, 633, 273, 5, 70, "Input",ExpressionUUID->"5c7e5a10-4e14-4c7b-830c-a555123d96c7"],
Cell[23463, 640, 246, 3, 70, "Output",ExpressionUUID->"d48397fa-6f11-4efc-a9ef-b7b9ed4bc186"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[23770, 650, 1233, 31, 70, "ExampleSection",ExpressionUUID->"0018885a-f6dd-4907-819f-dbbf7be7b18d",
 CellID->258228157],
Cell[25006, 683, 175, 3, 70, "ExampleText",ExpressionUUID->"024fe577-0162-42a0-80ad-e69e6153dc8c"],
Cell[CellGroupData[{
Cell[25206, 690, 830, 20, 70, "Input",ExpressionUUID->"1771d176-188d-4b87-8a99-ef45d938b5db"],
Cell[26039, 712, 603, 15, 70, "Output",ExpressionUUID->"3dc71836-4f12-47c2-9ecd-1a0059a73614"]
}, Open  ]],
Cell[CellGroupData[{
Cell[26679, 732, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3663d036-fc64-429e-a147-7d219319db25"],
Cell[26906, 739, 147, 2, 70, "ExampleText",ExpressionUUID->"b1370432-340e-4eb0-b11b-b4e1bedd9694"],
Cell[CellGroupData[{
Cell[27078, 745, 452, 9, 70, "Input",ExpressionUUID->"867a5717-cd1b-447c-9c93-07a5fd3f3128"],
Cell[27533, 756, 110, 1, 70, "Output",ExpressionUUID->"afc8318c-e6ff-498d-89bb-a1def08e3c15"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[27704, 764, 1244, 31, 70, "ExampleSection",ExpressionUUID->"9ed0932c-0ef6-413c-b243-daa771aa31ad",
 CellID->2123667759],
Cell[28951, 797, 502, 13, 70, "ExampleText",ExpressionUUID->"158016f2-4932-44c2-9a11-67588157fac9"],
Cell[CellGroupData[{
Cell[29478, 814, 599, 11, 70, "Input",ExpressionUUID->"087c35a1-62d5-4023-bd15-22b239a3c7c3"],
Cell[30080, 827, 110, 1, 70, "Output",ExpressionUUID->"05a34e3b-f464-4b2e-926d-e7acb9673ebd"]
}, Open  ]],
Cell[CellGroupData[{
Cell[30227, 833, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"795ec6a0-a41d-462c-931e-0f8d347d70b3"],
Cell[30454, 840, 897, 23, 70, "ExampleText",ExpressionUUID->"b55e738c-d7c3-4ec2-bb66-9698cc842f9f"],
Cell[CellGroupData[{
Cell[31376, 867, 463, 11, 70, "Input",ExpressionUUID->"cd77e16b-8860-4686-90c5-698894854496"],
Cell[31842, 880, 111, 1, 70, "Output",ExpressionUUID->"a9ddedce-f365-4300-98a1-7f008fd44241"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[32002, 887, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"505042de-7f07-4b95-a768-f14447eddefd"],
Cell[32229, 894, 212, 3, 70, "ExampleText",ExpressionUUID->"3a5dbf90-e92d-48cb-9cd8-c46f376c185b"],
Cell[CellGroupData[{
Cell[32466, 901, 478, 11, 70, "Input",ExpressionUUID->"85ea4227-94c7-4c93-9e98-2ef54cebaef0"],
Cell[32947, 914, 111, 1, 70, "Output",ExpressionUUID->"c6569d0e-70b1-4155-94b6-4ebed58b9422"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[33119, 922, 1237, 31, 70, "ExampleSection",ExpressionUUID->"356bba6b-d8ca-47be-a837-e929eb16ab30",
 CellID->1305812373],
Cell[34359, 955, 203, 3, 70, "ExampleText",ExpressionUUID->"bdc9bd1b-cc3b-4236-a431-52cb6d67f5c0"],
Cell[CellGroupData[{
Cell[34587, 962, 457, 9, 70, "Input",ExpressionUUID->"4a854850-29b4-437b-a3df-6962dbd98e78"],
Cell[35047, 973, 146, 1, 70, "Output",ExpressionUUID->"5f1151bb-5f7c-4060-9cda-152fa9cfc8c3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[35230, 979, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"8f269187-6d77-4419-be23-27a0a0cecebd"],
Cell[35457, 986, 160, 2, 70, "ExampleText",ExpressionUUID->"84c4b4e0-e131-416a-befc-f24915dfde21"],
Cell[CellGroupData[{
Cell[35642, 992, 190, 3, 70, "Input",ExpressionUUID->"379abedc-a7ac-4fec-86f0-3baf989edc8d"],
Cell[35835, 997, 143, 2, 70, "Output",ExpressionUUID->"a622063a-0fac-4e87-9f27-4c079fec4bad"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[36029, 1005, 3114, 82, 70, "SeeAlsoSection",ExpressionUUID->"52f2aa09-9dcf-4bea-bf07-afe21b6bf3f7"],
Cell[39146, 1089, 678, 18, 70, "MoreAboutSection",ExpressionUUID->"dc2b3d42-8b47-465f-aced-16012858cf53"],
Cell[39827, 1109, 78, 0, 70, "FooterCell",ExpressionUUID->"53fd6c9e-7b3e-43d5-af6e-0a5baaa5b4a2"]
}
]
*)

(* End of internal cache information *)

