[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"navigation_docs":3,"-ciphers-playfair":116,"-ciphers-playfair-surround":293},[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":76,"body":118,"description":286,"extension":287,"links":288,"meta":289,"navigation":290,"path":77,"seo":291,"stem":78,"__hash__":292},"docs\u002F2.ciphers\u002F09.playfair.md",{"type":119,"value":120,"toc":284},"minimark",[121,125,129,273,280],[122,123],"cipher-facts",{"name":124},"playfair",[126,127,128],"p",{},"The key fills a 5×5 table, duplicates dropped, rest of the alphabet after it, J folded into I to fit 25 cells. The text is stripped to letters and cut into pairs. Same row - move right. Same column - move down. Otherwise each letter takes the other's column. Two identical letters in a pair get split with an X, and an odd final letter is paired with X. Output is uppercase without spaces, because the input has been reshaped anyway.",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-ts shiki shiki-themes github-light github-light poimandres","const playfair = create(\"playfair\");\nplayfair.encode(\"HIDE THE GOLD IN THE TREE STUMP\", { key: \"PLAYFAIR EXAMPLE\" }).text;\n\u002F\u002F \"BMEAZBXDNABEKUDMUIXMMOUVIF\"\nplayfair.decode(\"BMEAZBXDNABEKUDMUIXMMOUVIF\", { key: \"PLAYFAIR EXAMPLE\" }).text;\n\u002F\u002F \"HIDETHEGOLDINTHETREXESTUMP\"\n","ts","",[137,138,139,175,223,230,267],"code",{"__ignoreMap":135},[140,141,144,148,152,155,159,163,167,170,172],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"s1TYA","const",[140,149,151],{"class":150},"saoiD"," playfair",[140,153,154],{"class":146}," =",[140,156,158],{"class":157},"sULi6"," create",[140,160,162],{"class":161},"sKlNE","(",[140,164,166],{"class":165},"scVjq","\"",[140,168,124],{"class":169},"sQ7BG",[140,171,166],{"class":165},[140,173,174],{"class":161},");\n",[140,176,178,181,184,187,189,191,194,196,199,203,206,209,212,214,217,220],{"class":142,"line":177},2,[140,179,124],{"class":180},"spVlQ",[140,182,183],{"class":161},".",[140,185,186],{"class":157},"encode",[140,188,162],{"class":161},[140,190,166],{"class":165},[140,192,193],{"class":169},"HIDE THE GOLD IN THE TREE STUMP",[140,195,166],{"class":165},[140,197,198],{"class":161},", {",[140,200,202],{"class":201},"snHMy"," key",[140,204,205],{"class":161},":",[140,207,208],{"class":165}," \"",[140,210,211],{"class":169},"PLAYFAIR EXAMPLE",[140,213,166],{"class":165},[140,215,216],{"class":161}," }).",[140,218,219],{"class":180},"text",[140,221,222],{"class":161},";\n",[140,224,226],{"class":142,"line":225},3,[140,227,229],{"class":228},"sjhu3","\u002F\u002F \"BMEAZBXDNABEKUDMUIXMMOUVIF\"\n",[140,231,233,235,237,240,242,244,247,249,251,253,255,257,259,261,263,265],{"class":142,"line":232},4,[140,234,124],{"class":180},[140,236,183],{"class":161},[140,238,239],{"class":157},"decode",[140,241,162],{"class":161},[140,243,166],{"class":165},[140,245,246],{"class":169},"BMEAZBXDNABEKUDMUIXMMOUVIF",[140,248,166],{"class":165},[140,250,198],{"class":161},[140,252,202],{"class":201},[140,254,205],{"class":161},[140,256,208],{"class":165},[140,258,211],{"class":169},[140,260,166],{"class":165},[140,262,216],{"class":161},[140,264,219],{"class":180},[140,266,222],{"class":161},[140,268,270],{"class":142,"line":269},5,[140,271,272],{"class":228},"\u002F\u002F \"HIDETHEGOLDINTHETREXESTUMP\"\n",[126,274,275,276,279],{},"The round trip keeps the X that split ",[137,277,278],{},"TREE",". That's the cipher, not a bug, and every Playfair implementation that claims otherwise is guessing. Key is required and must contain letters. The Wikipedia vector above is the one the test suite checks.",[281,282,283],"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 .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":135,"searchDepth":177,"depth":177,"links":285},[],"Letter pairs through a keyed 5×5 table. J folds into I, doubled pairs are split with X, odd length is padded with X.","md",null,{},true,{"title":76,"description":286},"05l8GoAfALhSZaG89grpdLRGunChDTMa7hazs6UE28k",[294,296],{"title":72,"path":73,"stem":74,"description":295,"children":-1},"A keyed inner disk against a fixed outer alphabet, turned one step after every period letters. Simplified on purpose, so it is reproducible.",{"title":80,"path":81,"stem":82,"description":297,"children":-1},"Each letter becomes a row digit and a column digit in a 5×5 grid, I and J sharing a cell. An optional keyword reorders the grid.",1788614951661]