[{"data":1,"prerenderedAt":387},["ShallowReactive",2],{"navigation_docs":3,"-ciphers-affine":116,"-ciphers-affine-surround":382},[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":60,"body":118,"description":375,"extension":376,"links":377,"meta":378,"navigation":379,"path":61,"seo":380,"stem":62,"__hash__":381},"docs\u002F2.ciphers\u002F05.affine.md",{"type":119,"value":120,"toc":373},"minimark",[121,125,161,350,369],[122,123],"cipher-facts",{"name":124},"affine",[126,127,128,129,133,134,137,138,141,142,144,145,148,149,152,153,156,157,160],"p",{},"A letter is its index x, 0 to 25. Encoding is ",[130,131,132],"code",{},"(a·x + b) mod 26",", decoding multiplies by the inverse of ",[130,135,136],{},"a",". That inverse only exists when ",[130,139,140],{},"gcd(a, 26) = 1",", so ",[130,143,136],{}," is one of 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 or 25. Anything else is an ",[130,146,147],{},"InvalidOptionError"," before the first letter, because a cipher that maps two letters onto one cannot be decoded and shouldn't pretend. ",[130,150,151],{},"b"," is a shift 0 to 25. Defaults are ",[130,154,155],{},"a = 5",", ",[130,158,159],{},"b = 8",".",[162,163,168],"pre",{"className":164,"code":165,"language":166,"meta":167,"style":167},"language-ts shiki shiki-themes github-light github-light poimandres","const affine = create(\"affine\");\naffine.encode(\"AFFINE CIPHER\", { a: 5, b: 8 }).text; \u002F\u002F \"IHHWVC SWFRCP\"\naffine.decode(\"IHHWVC SWFRCP\", { a: 5, b: 8 }).text; \u002F\u002F \"AFFINE CIPHER\"\naffine.encode(\"X\", { a: 13, b: 0 }); \u002F\u002F throws, gcd(13, 26) = 13\n","ts","",[130,169,170,206,264,308],{"__ignoreMap":167},[171,172,175,179,183,186,190,194,198,201,203],"span",{"class":173,"line":174},"line",1,[171,176,178],{"class":177},"s1TYA","const",[171,180,182],{"class":181},"saoiD"," affine",[171,184,185],{"class":177}," =",[171,187,189],{"class":188},"sULi6"," create",[171,191,193],{"class":192},"sKlNE","(",[171,195,197],{"class":196},"scVjq","\"",[171,199,124],{"class":200},"sQ7BG",[171,202,197],{"class":196},[171,204,205],{"class":192},");\n",[171,207,209,212,214,217,219,221,224,226,229,233,236,240,243,246,248,251,254,257,260],{"class":173,"line":208},2,[171,210,124],{"class":211},"spVlQ",[171,213,160],{"class":192},[171,215,216],{"class":188},"encode",[171,218,193],{"class":192},[171,220,197],{"class":196},[171,222,223],{"class":200},"AFFINE CIPHER",[171,225,197],{"class":196},[171,227,228],{"class":192},", {",[171,230,232],{"class":231},"snHMy"," a",[171,234,235],{"class":192},":",[171,237,239],{"class":238},"siHFe"," 5",[171,241,242],{"class":192},",",[171,244,245],{"class":231}," b",[171,247,235],{"class":192},[171,249,250],{"class":238}," 8",[171,252,253],{"class":192}," }).",[171,255,256],{"class":211},"text",[171,258,259],{"class":192},"; ",[171,261,263],{"class":262},"sjhu3","\u002F\u002F \"IHHWVC SWFRCP\"\n",[171,265,267,269,271,274,276,278,281,283,285,287,289,291,293,295,297,299,301,303,305],{"class":173,"line":266},3,[171,268,124],{"class":211},[171,270,160],{"class":192},[171,272,273],{"class":188},"decode",[171,275,193],{"class":192},[171,277,197],{"class":196},[171,279,280],{"class":200},"IHHWVC SWFRCP",[171,282,197],{"class":196},[171,284,228],{"class":192},[171,286,232],{"class":231},[171,288,235],{"class":192},[171,290,239],{"class":238},[171,292,242],{"class":192},[171,294,245],{"class":231},[171,296,235],{"class":192},[171,298,250],{"class":238},[171,300,253],{"class":192},[171,302,256],{"class":211},[171,304,259],{"class":192},[171,306,307],{"class":262},"\u002F\u002F \"AFFINE CIPHER\"\n",[171,309,311,313,315,317,319,321,324,326,328,330,332,335,337,339,341,344,347],{"class":173,"line":310},4,[171,312,124],{"class":211},[171,314,160],{"class":192},[171,316,216],{"class":188},[171,318,193],{"class":192},[171,320,197],{"class":196},[171,322,323],{"class":200},"X",[171,325,197],{"class":196},[171,327,228],{"class":192},[171,329,232],{"class":231},[171,331,235],{"class":192},[171,333,334],{"class":238}," 13",[171,336,242],{"class":192},[171,338,245],{"class":231},[171,340,235],{"class":192},[171,342,343],{"class":238}," 0",[171,345,346],{"class":192}," }); ",[171,348,349],{"class":262},"\u002F\u002F throws, gcd(13, 26) = 13\n",[126,351,352,355,356,358,359,361,362,365,366,368],{},[130,353,354],{},"a = 1"," is a ",[136,357,44],{"href":45}," with shift ",[130,360,151],{},". ",[130,363,364],{},"a = 25, b = 25"," is ",[136,367,56],{"href":57},". Twelve multipliers times 26 shifts is 312 keys - small enough to try every one.",[370,371,372],"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":167,"searchDepth":208,"depth":208,"links":374},[],"E(x) = (a·x + b) mod 26. The multiplier must be coprime with 26, which leaves twelve of them and 312 keys.","md",null,{},true,{"title":60,"description":375},"Yic3mlFbpw62bwrXQ6j7S2V2JCXpGrqzLCZwKLKpkHw",[383,385],{"title":56,"path":57,"stem":58,"description":384,"children":-1},"Mirror the alphabet. A becomes Z, B becomes Y. Hebrew in origin, one key, self-inverse.",{"title":64,"path":65,"stem":66,"description":386,"children":-1},"A keyword picks a different Caesar shift for each letter. Keyspace 26 to the key length, weakness is the period.",1788614951661]