[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"navigation_docs":3,"-ciphers-alberti":116,"-ciphers-alberti-surround":365},[4,36],{"title":5,"path":6,"stem":7,"children":8,"icon":35},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Encode and decode","\u002Fguide\u002Ftransform","1.guide\u002F02.transform",{"title":16,"path":17,"stem":18},"Analysis","\u002Fguide\u002Fanalysis","1.guide\u002F03.analysis",{"title":20,"path":21,"stem":22},"CLI","\u002Fguide\u002Fcli","1.guide\u002F04.cli",{"title":24,"path":25,"stem":26},"Agents","\u002Fguide\u002Fagents","1.guide\u002F05.agents",{"title":28,"path":29,"stem":30},"Custom ciphers","\u002Fguide\u002Fcustom","1.guide\u002F06.custom",{"title":32,"path":33,"stem":34},"Playground","\u002Fguide\u002Fplayground","1.guide\u002F07.playground","i-solar-book-2-linear",{"title":37,"path":38,"stem":39,"children":40,"icon":115},"Ciphers","\u002Fciphers","2.ciphers\u002F00.index",[41,43,47,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111],{"title":42,"path":38,"stem":39},"Overview",{"title":44,"path":45,"stem":46},"Caesar","\u002Fciphers\u002Fcaesar","2.ciphers\u002F01.caesar",{"title":48,"path":49,"stem":50},"ROT-13","\u002Fciphers\u002Frot13","2.ciphers\u002F02.rot13",{"title":52,"path":53,"stem":54},"ROT-47","\u002Fciphers\u002Frot47","2.ciphers\u002F03.rot47",{"title":56,"path":57,"stem":58},"Atbash","\u002Fciphers\u002Fatbash","2.ciphers\u002F04.atbash",{"title":60,"path":61,"stem":62},"Affine","\u002Fciphers\u002Faffine","2.ciphers\u002F05.affine",{"title":64,"path":65,"stem":66},"Vigenère","\u002Fciphers\u002Fvigenere","2.ciphers\u002F06.vigenere",{"title":68,"path":69,"stem":70},"Trithemius","\u002Fciphers\u002Ftrithemius","2.ciphers\u002F07.trithemius",{"title":72,"path":73,"stem":74},"Alberti","\u002Fciphers\u002Falberti","2.ciphers\u002F08.alberti",{"title":76,"path":77,"stem":78},"Playfair","\u002Fciphers\u002Fplayfair","2.ciphers\u002F09.playfair",{"title":80,"path":81,"stem":82},"Polybius square","\u002Fciphers\u002Fpolybius","2.ciphers\u002F10.polybius",{"title":84,"path":85,"stem":86},"Morse code","\u002Fciphers\u002Fmorse","2.ciphers\u002F11.morse",{"title":88,"path":89,"stem":90},"Bacon's cipher","\u002Fciphers\u002Fbacon","2.ciphers\u002F12.bacon",{"title":92,"path":93,"stem":94},"Tap code","\u002Fciphers\u002Ftap-code","2.ciphers\u002F13.tap-code",{"title":96,"path":97,"stem":98},"ADFGVX","\u002Fciphers\u002Fadfgvx","2.ciphers\u002F14.adfgvx",{"title":100,"path":101,"stem":102},"Bifid","\u002Fciphers\u002Fbifid","2.ciphers\u002F15.bifid",{"title":104,"path":105,"stem":106},"Rail fence","\u002Fciphers\u002Frail-fence","2.ciphers\u002F16.rail-fence",{"title":108,"path":109,"stem":110},"Columnar transposition","\u002Fciphers\u002Fcolumnar","2.ciphers\u002F17.columnar",{"title":112,"path":113,"stem":114},"Enigma M3","\u002Fciphers\u002Fenigma","2.ciphers\u002F18.enigma","i-solar-library-linear",{"id":117,"title":72,"body":118,"description":358,"extension":359,"links":360,"meta":361,"navigation":362,"path":73,"seo":363,"stem":74,"__hash__":364},"docs\u002F2.ciphers\u002F08.alberti.md",{"type":119,"value":120,"toc":356},"minimark",[121,125,144,349,352],[122,123],"cipher-facts",{"name":124},"alberti",[126,127,128,129,133,134,137,138,140,141,143],"p",{},"Alberti's disk of 1467 had a fixed outer ring and a movable inner ring, and the operator turned the inner ring by agreement. That agreement is the problem - two implementations, two answers. So this one fixes it: the inner disk is the keyword with duplicate letters removed, then the rest of the alphabet, and it rotates one position after every ",[130,131,132],"code",{},"period"," Latin letters. ",[130,135,136],{},"key"," and ",[130,139,132],{}," are both required, ",[130,142,132],{}," a positive integer.",[145,146,151],"pre",{"className":147,"code":148,"language":149,"meta":150,"style":150},"language-ts shiki shiki-themes github-light github-light poimandres","const alberti = create(\"alberti\");\nalberti.encode(\"ATTACK AT DAWN\", { key: \"ALBERTI\", period: 4 }).text; \u002F\u002F \"ASSAEH LU TBYN\"\nalberti.decode(\"ASSAEH LU TBYN\", { key: \"ALBERTI\", period: 4 }).text; \u002F\u002F \"ATTACK AT DAWN\"\nalberti.encode(\"AAAA A\", { key: \"KEY\", period: 4 }).text; \u002F\u002F \"KKKK E\", the disk turned after four\n","ts","",[130,152,153,189,253,301],{"__ignoreMap":150},[154,155,158,162,166,169,173,177,181,184,186],"span",{"class":156,"line":157},"line",1,[154,159,161],{"class":160},"s1TYA","const",[154,163,165],{"class":164},"saoiD"," alberti",[154,167,168],{"class":160}," =",[154,170,172],{"class":171},"sULi6"," create",[154,174,176],{"class":175},"sKlNE","(",[154,178,180],{"class":179},"scVjq","\"",[154,182,124],{"class":183},"sQ7BG",[154,185,180],{"class":179},[154,187,188],{"class":175},");\n",[154,190,192,195,198,201,203,205,208,210,213,217,220,223,226,228,231,234,236,240,243,246,249],{"class":156,"line":191},2,[154,193,124],{"class":194},"spVlQ",[154,196,197],{"class":175},".",[154,199,200],{"class":171},"encode",[154,202,176],{"class":175},[154,204,180],{"class":179},[154,206,207],{"class":183},"ATTACK AT DAWN",[154,209,180],{"class":179},[154,211,212],{"class":175},", {",[154,214,216],{"class":215},"snHMy"," key",[154,218,219],{"class":175},":",[154,221,222],{"class":179}," \"",[154,224,225],{"class":183},"ALBERTI",[154,227,180],{"class":179},[154,229,230],{"class":175},",",[154,232,233],{"class":215}," period",[154,235,219],{"class":175},[154,237,239],{"class":238},"siHFe"," 4",[154,241,242],{"class":175}," }).",[154,244,245],{"class":194},"text",[154,247,248],{"class":175},"; ",[154,250,252],{"class":251},"sjhu3","\u002F\u002F \"ASSAEH LU TBYN\"\n",[154,254,256,258,260,263,265,267,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298],{"class":156,"line":255},3,[154,257,124],{"class":194},[154,259,197],{"class":175},[154,261,262],{"class":171},"decode",[154,264,176],{"class":175},[154,266,180],{"class":179},[154,268,269],{"class":183},"ASSAEH LU TBYN",[154,271,180],{"class":179},[154,273,212],{"class":175},[154,275,216],{"class":215},[154,277,219],{"class":175},[154,279,222],{"class":179},[154,281,225],{"class":183},[154,283,180],{"class":179},[154,285,230],{"class":175},[154,287,233],{"class":215},[154,289,219],{"class":175},[154,291,239],{"class":238},[154,293,242],{"class":175},[154,295,245],{"class":194},[154,297,248],{"class":175},[154,299,300],{"class":251},"\u002F\u002F \"ATTACK AT DAWN\"\n",[154,302,304,306,308,310,312,314,317,319,321,323,325,327,330,332,334,336,338,340,342,344,346],{"class":156,"line":303},4,[154,305,124],{"class":194},[154,307,197],{"class":175},[154,309,200],{"class":171},[154,311,176],{"class":175},[154,313,180],{"class":179},[154,315,316],{"class":183},"AAAA A",[154,318,180],{"class":179},[154,320,212],{"class":175},[154,322,216],{"class":215},[154,324,219],{"class":175},[154,326,222],{"class":179},[154,328,329],{"class":183},"KEY",[154,331,180],{"class":179},[154,333,230],{"class":175},[154,335,233],{"class":215},[154,337,219],{"class":175},[154,339,239],{"class":238},[154,341,242],{"class":175},[154,343,245],{"class":194},[154,345,248],{"class":175},[154,347,348],{"class":251},"\u002F\u002F \"KKKK E\", the disk turned after four\n",[126,350,351],{},"Only ASCII letters count toward the period and the rotation, anything else passes through. This is not a historical simulation. It's a disk with a clock, which is what a puzzle setter usually means when they write \"Alberti\".",[353,354,355],"style",{},"html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":150,"searchDepth":191,"depth":191,"links":357},[],"A keyed inner disk against a fixed outer alphabet, turned one step after every period letters. Simplified on purpose, so it is reproducible.","md",null,{},true,{"title":72,"description":358},"TZZNZGVKUg2pXNzwlztw1G8KcVWVEvLGuP19Av9xyr0",[366,368],{"title":68,"path":69,"stem":70,"description":367,"children":-1},"A progressive shift. 0 for the first letter, 1 for the second, 2 for the third. No key, one fixed mapping.",{"title":76,"path":77,"stem":78,"description":369,"children":-1},"Letter pairs through a keyed 5×5 table. J folds into I, doubled pairs are split with X, odd length is padded with X.",1788614951661]