(* 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[     33451,        844]
NotebookOptionsPosition[     25726,        725]
NotebookOutlinePosition[     28843,        785]
CellTagsIndexPosition[     28800,        782]
WindowTitle->Seeds
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES GUIDE", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "4bb7d3da-c2eb-4750-b0d9-e1fe9b290ebd"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "ca9fed53-0de9-4db4-8dfd-7af0fe9acb13"],
        Background->LightDarkSwitched[
          RGBColor[0.85098, 0.396078, 0]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[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->
          "b7c47f3e-611c-42d7-8d87-813612429d78"]
        }],ExpressionUUID->"e7d111ec-d482-4fb6-8347-cbe3905b100d"],
        StripOnInput->False],{
       "\"WolframInstitute/Puzzles/guide/Seeds\"" :> None, 
        "\"Copy Wolfram Documentation Center URL\"" :> 
        CopyToClipboard["WolframInstitute/Puzzles/guide/Seeds"], Delimiter, 
        "\"Copy web URL\"" :> 
        Module[{DocumentationSearch`Private`nb$}, 
          DocumentationSearch`Private`nb$ = 
           NotebookPut[
            Notebook[{
              Cell[BoxData[
                MakeBoxes[
                 Hyperlink[
                  "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/guide/Seeds.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/guide/Seeds" <> ".html"], None}]}]},
       Appearance->None,
       MenuAppearance->Automatic,
       MenuStyle->"URLMenu"],
      MouseAppearanceTag["LinkHand"]]],
     LineSpacing->{1.4, 0},ExpressionUUID->
     "6a2098fd-3260-420c-ab05-d6de675cdecd"]], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "93b73f90-32df-46a6-b287-9e55d88afa63"]}
  }]], "AnchorBarGrid",
 GridBoxOptions->{GridBoxItemSize->{"Columns" -> {
     Scaled[0.65], {
      Scaled[0.34]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, 
   "RowsIndexed" -> {}}},
 CellID->1,ExpressionUUID->"0305f600-615e-4532-828d-5b4af8312a99"],

Cell[CellGroupData[{

Cell["Seeds", "GuideTitle",
 CellID->942062912,ExpressionUUID->"d5104dc8-946f-4ac1-bc96-f3f2175cdbec"],

Cell[TextData[{
 "A seed is the last thing between a remembered sentence and a private key, \
and almost every recovery problem is really a question about which sentence, \
in which scheme, with which normalization. The schemes here are the three \
that matter in practice and disagree in ways that are invisible from the \
words alone: BIP39, where twelve to twenty-four words out of a fixed 2048 \
carry a short SHA-256 checksum and become a seed through 2048 rounds of \
PBKDF2; Electrum, whose version 1 seeds are a checksum-free radix-1626 \
encoding stretched by a hundred thousand hashes and whose version 2 seeds are \
declared by a keyed-hash prefix rather than by a wordlist; and the \
brainwallet family, where a passphrase is hashed once and becomes a key. The \
same twelve words can be a valid BIP39 mnemonic, a valid Electrum seed, or \
both, and the seed each scheme derives is different. What is provided is each \
scheme's encoding, its validity rule, its seed function and its \
normalization, together with the ",
 Cell["HMAC", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "42b3204d-c4a8-4d45-9ac6-1a3bf766f1c2"],
 " and PBKDF2 primitives the Wolfram Language does not have and all three \
need. Every function is pinned against the published vectors of the \
specification it implements: all 24 official BIP39 English vectors in all \
four directions, the RFC 4231 keyed-hash cases, and the Electrum test suite's \
own seeds in five languages."
}], "GuideAbstract",
 CellID->2001916300,ExpressionUUID->"a0e244a2-5c22-4162-8abb-100554004559"],

Cell["\t", "GuideDelimiterSubsection",ExpressionUUID->"4e18e555-f967-4953-ace5-d542386a75da"],

Cell[CellGroupData[{

Cell["BIP39 mnemonics", "GuideFunctionsSubsection",ExpressionUUID->"9b4ebde0-c1a9-4549-bfe8-dc48809e5b8a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39Mnemonic"]], 
    "paclet:WolframInstitute/Puzzles/ref/BIP39Mnemonic", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7beaa4e3-4dbc-4788-aad7-db79e6701b8d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "BIP39 English mnemonic sentence encoding a 16, 20, 24, 28 or 32-byte entropy"
}], "GuideText",ExpressionUUID->"e33b7e63-5ce6-440a-9cf3-821171576017"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39Entropy"]], 
    "paclet:WolframInstitute/Puzzles/ref/BIP39Entropy", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "27fd7ee3-73c8-4c45-9df9-3c46767f2c04"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "entropy of a BIP39 English mnemonic, checksum verified"
}], "GuideText",ExpressionUUID->"f397b4d4-f80a-408f-9265-a103cc30d21d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39MnemonicQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/BIP39MnemonicQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "97d7164f-aea4-45c7-8682-0929c0081f8b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "whether a sentence is a well-formed BIP39 English mnemonic"
}], "GuideText",ExpressionUUID->"abd1e52c-f2f1-4d00-8bbc-51c51ce9da07"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["$BIP39EnglishWords"]], 
    "paclet:WolframInstitute/Puzzles/ref/$BIP39EnglishWords", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "e5b0aa39-b23f-445d-a7dc-6f517becf7c8"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the 2048 words of the BIP39 English wordlist, in specification order"
}], "GuideText",ExpressionUUID->"504ab3b5-5feb-476a-9ad2-bed79ad90cbd"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Select", FontSlant -> "Italic"]]], "paclet:ref/Select"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a9cab7ee-4e87-492a-b83f-5d61d4d8f859"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Failure", FontSlant -> "Italic"]]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "384a8577-f307-4d99-8732-4afd7c423271"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringSplit", FontSlant -> "Italic"]]], 
    "paclet:ref/StringSplit"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "218fd529-b25e-4c70-b035-c14dee20c633"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"e6086ae3-f98f-4ff5-9703-3e0651358bfb"]
}, Open  ]],

Cell[CellGroupData[{

Cell["BIP39 seeds and partial phrases", "GuideFunctionsSubsection",ExpressionUUID->"2919b374-9278-4a46-af33-2b4f07721e64"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39Seed"]], "paclet:WolframInstitute/Puzzles/ref/BIP39Seed", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1d09c456-463b-46fb-b74f-360a8e3dcb89"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "64-byte BIP39 seed of a mnemonic, with the optional passphrase"
}], "GuideText",ExpressionUUID->"6ee6884c-06e3-47a0-8ade-d7398910138e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BIP39FinalWords"]], 
    "paclet:WolframInstitute/Puzzles/ref/BIP39FinalWords", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d049430a-d985-45ae-9063-a61751853198"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "words that complete an 11, 14, 17, 20 or 23-word prefix to a checksum-valid \
mnemonic"
}], "GuideText",ExpressionUUID->"7f6f743f-d5f6-4ad1-b33f-821a7baf4897"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["CharacterNormalize", FontSlant -> "Italic"]]], 
    "paclet:ref/CharacterNormalize"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4752dd69-7196-48fc-b4eb-724ba633e96e"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the NFKD normalization BIP39 applies before hashing"
}], "GuideText",ExpressionUUID->"8e1e252f-ae11-44ef-8a2f-c01a23f7e0c8"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Electrum version 1, the old scheme", "GuideFunctionsSubsection",ExpressionUUID->"866f1173-0db1-4323-95c9-99226cfa5d6a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV1Mnemonic"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV1Mnemonic", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "66950cbe-398b-4998-b509-bb27bc6e7ccf"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "version 1 mnemonic encoding a hexadecimal seed, three words per 32-bit group"
}], "GuideText",ExpressionUUID->"7bd5df0f-d9db-4494-bdf1-79a6d2c6526c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV1Seed"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV1Seed", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "76ae36d4-3625-4cea-a834-c114b8af0b56"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "hexadecimal seed string a version 1 mnemonic encodes"
}], "GuideText",ExpressionUUID->"66b6c579-7c3a-493d-8185-e73f99cbf33d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV1MnemonicQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV1MnemonicQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "adb9efbc-477e-4371-a8f0-738c4d7bea12"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "whether a sentence is a version 1 mnemonic, 12 or 24 words of the version 1 \
list"
}], "GuideText",ExpressionUUID->"410bf517-3b01-42c2-b946-851871162646"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV1MasterPrivateKey"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV1MasterPrivateKey", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "fe4259fa-398f-44ae-90c3-0b081d9ede00"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "master private key, 100000 rounds of SHA-256 over the seed digits"
}], "GuideText",ExpressionUUID->"e3d3a7aa-b785-4c89-ad48-3c69f63de46d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["$ElectrumV1Words"]], 
    "paclet:WolframInstitute/Puzzles/ref/$ElectrumV1Words", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "48fbd0f4-aeac-4411-9e70-f6d5690e5bc7"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the 1626 words of the version 1 wordlist, in encoding order"
}], "GuideText",ExpressionUUID->"c9056d14-3259-45cb-8992-85a300e3ede2"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Electrum version 2", "GuideFunctionsSubsection",ExpressionUUID->"08b36ff5-24d9-47f0-8ac4-a0e1847964ea"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumSeedVersion"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumSeedVersion", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b3eaa670-5980-4112-9100-7b80cc74d41b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "kind of Electrum seed a sentence is, or None"
}], "GuideText",ExpressionUUID->"4deeaa56-a2c4-4b48-8e54-cf70d888b988"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ElectrumV2Seed"]], 
    "paclet:WolframInstitute/Puzzles/ref/ElectrumV2Seed", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "eae2e225-e2b3-4b38-897e-efb1016a92e1"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "64-byte version 2 seed, PBKDF2 salted with \"electrum\""
}], "GuideText",ExpressionUUID->"a613c2da-6d16-427c-8921-498f80587eee"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Brainwallets and passphrase keys", "GuideFunctionsSubsection",ExpressionUUID->"1795c8f8-5b13-4b51-a4c0-351254f0945c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BrainwalletKey"]], 
    "paclet:WolframInstitute/Puzzles/ref/BrainwalletKey", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "32010555-eff5-47a7-8056-92cfedd3d81f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "SHA-256 of a passphrase as a 32-byte private key, plain or iterated"
}], "GuideText",ExpressionUUID->"ca9d52ae-553c-4fe9-ae42-078eb08d7fbe"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Hash", FontSlant -> "Italic"]]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9133d1ab-01da-4aa9-b2c7-9de9dbc755ba"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the digest the whole family is built on"
}], "GuideText",ExpressionUUID->"341ca0ba-ff1e-4861-9532-ec487eb25459"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Key stretching primitives", "GuideFunctionsSubsection",ExpressionUUID->"629b2eca-9444-4d53-b465-a0ff8b127f0e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HMACHash"]], "paclet:WolframInstitute/Puzzles/ref/HMACHash", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0ff826c8-927c-4e47-aedf-e120dfff15aa"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "RFC 2104 keyed hash over SHA-256 or SHA-512"
}], "GuideText",ExpressionUUID->"d09e9c93-ee31-44d0-aecd-5f8c0d39326e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PBKDF2Key"]], "paclet:WolframInstitute/Puzzles/ref/PBKDF2Key", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "17d4277b-01e6-4a06-be66-e91c2ce1bf6f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "RFC 8018 PBKDF2 derived key over HMAC-SHA-256 or HMAC-SHA-512"
}], "GuideText",ExpressionUUID->"33a9a7aa-d629-4634-9bce-99cd28ede057"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["GenerateDerivedKey", FontSlant -> "Italic"]]], 
    "paclet:ref/GenerateDerivedKey"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "56a5f04f-a555-4882-93bb-51d2c3d635d2"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the kernel's scrypt derivation, the one stretching function it does \
provide"
}], "GuideText",ExpressionUUID->"b52c81b3-86f2-4c89-bdea-4ca04e56b6be"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArray", FontSlant -> "Italic"]]], "paclet:ref/ByteArray"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b6de5dc0-4ae8-418d-bc29-b65234f098cf"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the byte form every seed and key here is returned in"
}], "GuideText",ExpressionUUID->"9fcfde70-4f69-4dab-b690-121126b86d10"]
}, Open  ]],

Cell["Guides", "GuideFunctionsSubsection",ExpressionUUID->"5862014a-e572-479b-bfb2-1ba79c787fa8"],

Cell[BoxData[{Cell[TextData[Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Derivation"]], 
    "paclet:WolframInstitute/Puzzles/guide/Derivation"},
   "RefLinkPlain",
   BaseStyle->{"GuideTOCLink"}]],ExpressionUUID->
  "0406aeba-7281-4499-8d4a-a68db5e67453"]], "InlineFunctionSans",
  ExpressionUUID->"0413354b-ad1f-42c2-b54e-961c9fcf7c2e"], "\n", 
 RowBox[{" ", 
  RowBox[{"\[LongDash]", " ", "\n", 
   RowBox[{
    RowBox[{
    "turns", " ", "a", " ", "seed", " ", "into", " ", "master", " ", "keys"}],
     ",", " ", 
    RowBox[{
    "child", " ", "keys", " ", "and", " ", 
     "addresses"}]}]}]}]}], "GuideTOCLink",ExpressionUUID->"275172ec-8394-\
46a4-9d17-a11c0eda803d"],

Cell[BoxData[{Cell[TextData[Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Encodings"]], 
    "paclet:WolframInstitute/Puzzles/guide/Encodings"},
   "RefLinkPlain",
   BaseStyle->{"GuideTOCLink"}]],ExpressionUUID->
  "1bbe2fdf-5945-4b86-9a10-ffb59fb280b0"]], "InlineFunctionSans",
  ExpressionUUID->"ae512303-9c0f-4557-b100-b324ed4cb6d9"], "\n", 
 RowBox[{" ", 
  RowBox[{"\[LongDash]", " ", "\n", 
   RowBox[{
    RowBox[{"the", " ", "hexadecimal"}], ",", " ", 
    RowBox[{"byte", "-", 
     RowBox[{
     "list", " ", "and", " ", "Base58Check", " ", "spellings", " ", "the", " ",
       "seeds", " ", "arrive", " ", "in"}]}]}]}]}]}], "GuideTOCLink",Expressio\
nUUID->"3bb09caf-084e-42fe-8594-315d214fe0c5"],

Cell[BoxData[{Cell[TextData[Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Search"]], "paclet:WolframInstitute/Puzzles/guide/Search"},
   "RefLinkPlain",
   BaseStyle->{"GuideTOCLink"}]],ExpressionUUID->
  "1af604e0-029c-4c22-9071-d843d648db75"]], "InlineFunctionSans",
  ExpressionUUID->"65c58d61-a8ec-43fd-9f09-ebe8d98178bc"], "\n", 
 RowBox[{" ", 
  RowBox[{"\[LongDash]", " ", "\n", 
   RowBox[{
   "candidate", " ", "generation", " ", "and", " ", "sweep", " ", "drivers", " ",
     "that", " ", "call", " ", "these", " ", "seed", " ", "functions", " ", 
    "in", " ", "a", " ", "loop"}]}]}]}], "GuideTOCLink",ExpressionUUID->\
"47f99906-974a-4634-b006-7b89a0043593"]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedTutorial.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Tech", " ", "Notes"}], "GuideTutorialsSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CrackingTheBitcoinMovieEnigma"]], 
           "paclet:WolframInstitute/Puzzles/tutorial/\
CrackingTheBitcoinMovieEnigma"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "8538b7cb-68e6-416d-a42f-8a803a3881ff"]], "GuideTutorial",
         ExpressionUUID->"47b260ab-82dd-4496-aade-ecdbfb14484c"]}]}
     }]}
  }]], "GuideTutorialsSection",ExpressionUUID->"049f1de6-a085-4238-aa14-\
ef3ee8743012"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "GuideMoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Puzzles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Puzzles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "66c42a0a-2731-4b70-97a3-a35497a42314"]], "GuideMoreAbout",
         ExpressionUUID->"47719e98-b460-4233-b173-2c97f469547a"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "0cb79ade-c4da-44d6-b88e-7f054296ef23"]], "GuideMoreAbout",
         ExpressionUUID->"5a43765b-0e5c-4cc2-8f71-9b57e6e242e4"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Encodings"]], 
           "paclet:WolframInstitute/Puzzles/guide/Encodings"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "d10e5cea-22ab-4e09-b8cd-6a1415d5eaf4"]], "GuideMoreAbout",
         ExpressionUUID->"afe58784-8e54-47db-a9c4-ac6cb67a121f"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Search"]], 
           "paclet:WolframInstitute/Puzzles/guide/Search"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "b6df7e3b-e51a-4dd6-818f-bb3fe7802154"]], "GuideMoreAbout",
         ExpressionUUID->"924485d8-641b-4fd9-bf13-ae7eded4ba3f"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Oracles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Oracles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "48242fe9-6dbb-41c0-b0a0-944067bf814f"]], "GuideMoreAbout",
         ExpressionUUID->"281e0256-55ad-4ef6-ae20-a4411fbfedb7"]}]}
     }]}
  }]], "GuideMoreAboutSection",ExpressionUUID->"4207b272-c931-4af6-9558-\
f6ffbecb6f38"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["BIP39: Mnemonic code for generating deterministic keys"]], 
   "https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"0c0c944d-4ff5-4ae1-9111-\
ff8faf0f4fcc"]], "GuideRelatedLinks",ExpressionUUID->"beeb540d-49d2-42fd-adec-\
ca740798ecd4"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["BIP39 test vectors, trezor/python-mnemonic"]], 
   "https://github.com/trezor/python-mnemonic/blob/master/vectors.json"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"e2a11fcd-f07e-40ee-b3ed-\
29915bff458b"]], "GuideRelatedLinks",ExpressionUUID->"a5895c89-09ae-4f36-b76b-\
561a386c9a7a"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["RFC 8018: PKCS #5 Password-Based Cryptography Specification"]], 
   "https://www.rfc-editor.org/rfc/rfc8018"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"ed1673dd-f6e2-47e3-acf9-\
73edc6903cd5"]], "GuideRelatedLinks",ExpressionUUID->"e70b6266-5ad7-4d36-9ae0-\
3ac626ff8b31"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["RFC 4231: HMAC-SHA test vectors"]], 
   "https://www.rfc-editor.org/rfc/rfc4231"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"d2016f03-d475-408a-b581-\
3e5a2a24bc7b"]], "GuideRelatedLinks",ExpressionUUID->"ba152438-5c7b-42ad-b95e-\
5a72d17bc761"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["Electrum seed phrase documentation"]], 
   "https://electrum.readthedocs.io/en/latest/seedphrase.html"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"f67abe55-6a22-4856-a05a-\
3fa422552d3b"]], "GuideRelatedLinks",ExpressionUUID->"f237eedb-f3f8-4865-9c59-\
8a2a3e63b816"]
}, Open  ]],

Cell[" ", "FooterCell",ExpressionUUID->"d7250523-ca38-43d8-8448-5f7deb1c63fc"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Seeds",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}}, 
  "NewStyles" -> True, "CitationPopupData" -> {$Failed, ""}, "ShowCitation" -> 
  False, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 41.002469}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {
     "BIP39", "mnemonic", "seed phrase", "checksum", "wordlist", "PBKDF2", 
      "HMAC", "passphrase", "Electrum", "old seed", "brainwallet", 
      "key stretching", "NFKD", "seed recovery"}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Guide", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "A seed is the last thing between a remembered sentence and a private \
key, and almost every recovery problem is really a question about which \
sentence, in which scheme, with which normalization. The schemes here are the \
three that matter in practice and disagree in ways that are invisible from \
the words alone: BIP39, where twelve to twenty-four words out of a fixed 2048 \
carry a short SHA-256 checksum and become a seed through 2048 rounds of \
PBKDF2; Electrum, whose version 1 seeds are a checksum-free radix-1626 \
encoding stretched by a hundred thousand hashes and whose version 2 seeds are \
declared by a keyed-hash prefix rather than by a wordlist; and the \
brainwallet family, where a passphrase is hashed once and becomes a key. The \
same twelve words can be a valid BIP39 mnemonic, a valid Electrum seed, or \
both, and the seed each scheme derives is different. What is provided is each \
scheme's encoding, its validity rule, its seed function and its \
normalization, together with the HMAC and PBKDF2 primitives the Wolfram \
Language does not have and all three need. Every function is pinned against \
the published vectors of the specification it implements: all 24 official \
BIP39 English vectors in all four directions, the RFC 4231 keyed-hash cases, \
and the Electrum test suite's own seeds in five languages.", "synonyms" -> {},
     "tabletags" -> {}, "title" -> "Seeds", "titlemodifier" -> "", 
    "metadescription" -> "", "windowtitle" -> "Seeds", "type" -> "Guide", 
    "uri" -> "WolframInstitute/Puzzles/guide/Seeds", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
CacheGraphics->False,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"84afd317-f2f3-4351-a29b-bd6350e514f9"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[573, 21, 3026, 73, 70, "AnchorBarGrid",ExpressionUUID->"0305f600-615e-4532-828d-5b4af8312a99",
 CellID->1],
Cell[CellGroupData[{
Cell[3624, 98, 102, 1, 70, "GuideTitle",ExpressionUUID->"d5104dc8-946f-4ac1-bc96-f3f2175cdbec",
 CellID->942062912],
Cell[3729, 101, 1592, 24, 70, "GuideAbstract",ExpressionUUID->"a0e244a2-5c22-4162-8abb-100554004559",
 CellID->2001916300],
Cell[5324, 127, 93, 0, 70, "GuideDelimiterSubsection",ExpressionUUID->"4e18e555-f967-4953-ace5-d542386a75da"],
Cell[CellGroupData[{
Cell[5442, 131, 106, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"9b4ebde0-c1a9-4549-bfe8-dc48809e5b8a"],
Cell[5551, 133, 541, 14, 70, "GuideText",ExpressionUUID->"e33b7e63-5ce6-440a-9cf3-821171576017"],
Cell[6095, 149, 517, 14, 70, "GuideText",ExpressionUUID->"f397b4d4-f80a-408f-9265-a103cc30d21d"],
Cell[6615, 165, 525, 14, 70, "GuideText",ExpressionUUID->"abd1e52c-f2f1-4d00-8bbc-51c51ce9da07"],
Cell[7143, 181, 543, 14, 70, "GuideText",ExpressionUUID->"504ab3b5-5feb-476a-9ad2-bed79ad90cbd"],
Cell[7689, 197, 958, 32, 70, "GuideText",ExpressionUUID->"e6086ae3-f98f-4ff5-9703-3e0651358bfb"]
}, Open  ]],
Cell[CellGroupData[{
Cell[8684, 234, 122, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"2919b374-9278-4a46-af33-2b4f07721e64"],
Cell[8809, 236, 514, 13, 70, "GuideText",ExpressionUUID->"6ee6884c-06e3-47a0-8ade-d7398910138e"],
Cell[9326, 251, 555, 15, 70, "GuideText",ExpressionUUID->"7f6f743f-d5f6-4ad1-b33f-821a7baf4897"],
Cell[9884, 268, 499, 15, 70, "GuideText",ExpressionUUID->"8e1e252f-ae11-44ef-8a2f-c01a23f7e0c8"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10420, 288, 125, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"866f1173-0db1-4323-95c9-99226cfa5d6a"],
Cell[10548, 290, 551, 14, 70, "GuideText",ExpressionUUID->"7bd5df0f-d9db-4494-bdf1-79a6d2c6526c"],
Cell[11102, 306, 519, 14, 70, "GuideText",ExpressionUUID->"66b6c579-7c3a-493d-8185-e73f99cbf33d"],
Cell[11624, 322, 559, 15, 70, "GuideText",ExpressionUUID->"410bf517-3b01-42c2-b946-851871162646"],
Cell[12186, 339, 556, 14, 70, "GuideText",ExpressionUUID->"e3d3a7aa-b785-4c89-ad48-3c69f63de46d"],
Cell[12745, 355, 530, 14, 70, "GuideText",ExpressionUUID->"c9056d14-3259-45cb-8992-85a300e3ede2"]
}, Open  ]],
Cell[CellGroupData[{
Cell[13312, 374, 109, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"08b36ff5-24d9-47f0-8ac4-a0e1847964ea"],
Cell[13424, 376, 521, 14, 70, "GuideText",ExpressionUUID->"4deeaa56-a2c4-4b48-8e54-cf70d888b988"],
Cell[13948, 392, 522, 14, 70, "GuideText",ExpressionUUID->"a613c2da-6d16-427c-8921-498f80587eee"]
}, Open  ]],
Cell[CellGroupData[{
Cell[14507, 411, 123, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"1795c8f8-5b13-4b51-a4c0-351254f0945c"],
Cell[14633, 413, 534, 14, 70, "GuideText",ExpressionUUID->"ca9d52ae-553c-4fe9-ae42-078eb08d7fbe"],
Cell[15170, 429, 454, 14, 70, "GuideText",ExpressionUUID->"341ca0ba-ff1e-4861-9532-ec487eb25459"]
}, Open  ]],
Cell[CellGroupData[{
Cell[15661, 448, 116, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"629b2eca-9444-4d53-b465-a0ff8b127f0e"],
Cell[15780, 450, 493, 13, 70, "GuideText",ExpressionUUID->"d09e9c93-ee31-44d0-aecd-5f8c0d39326e"],
Cell[16276, 465, 513, 13, 70, "GuideText",ExpressionUUID->"33a9a7aa-d629-4634-9bce-99cd28ede057"],
Cell[16792, 480, 525, 16, 70, "GuideText",ExpressionUUID->"b52c81b3-86f2-4c89-bdea-4ca04e56b6be"],
Cell[17320, 498, 481, 15, 70, "GuideText",ExpressionUUID->"9fcfde70-4f69-4dab-b690-121126b86d10"]
}, Open  ]],
Cell[17816, 516, 97, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"5862014a-e572-479b-bfb2-1ba79c787fa8"],
Cell[17916, 518, 686, 18, 70, "GuideTOCLink",ExpressionUUID->"275172ec-8394-46a4-9d17-a11c0eda803d"],
Cell[18605, 538, 717, 17, 70, "GuideTOCLink",ExpressionUUID->"3bb09caf-084e-42fe-8594-315d214fe0c5"],
Cell[19325, 557, 680, 14, 70, "GuideTOCLink",ExpressionUUID->"47f99906-974a-4634-b006-7b89a0043593"]
}, Open  ]],
Cell[20020, 574, 898, 22, 70, "GuideTutorialsSection",ExpressionUUID->"049f1de6-a085-4238-aa14-ef3ee8743012"],
Cell[CellGroupData[{
Cell[20943, 600, 2835, 65, 70, "GuideMoreAboutSection",ExpressionUUID->"4207b272-c931-4af6-9558-f6ffbecb6f38"],
Cell[23781, 667, 387, 9, 70, "GuideRelatedLinks",ExpressionUUID->"beeb540d-49d2-42fd-adec-ca740798ecd4"],
Cell[24171, 678, 379, 9, 70, "GuideRelatedLinks",ExpressionUUID->"a5895c89-09ae-4f36-b76b-561a386c9a7a"],
Cell[24553, 689, 368, 9, 70, "GuideRelatedLinks",ExpressionUUID->"e70b6266-5ad7-4d36-9ae0-3ac626ff8b31"],
Cell[24924, 700, 340, 9, 70, "GuideRelatedLinks",ExpressionUUID->"ba152438-5c7b-42ad-b95e-5a72d17bc761"],
Cell[25267, 711, 362, 9, 70, "GuideRelatedLinks",ExpressionUUID->"f237eedb-f3f8-4865-9c59-8a2a3e63b816"]
}, Open  ]],
Cell[25644, 723, 78, 0, 70, "FooterCell",ExpressionUUID->"d7250523-ca38-43d8-8448-5f7deb1c63fc"]
}
]
*)

(* End of internal cache information *)

