{ "info": { "author": "crazyj", "author_email": "crazyj7@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "\n# Jake Cipher\n\n\n> Author: crazyj7 and Jake(Jaewook)\n\n\n\nThis encryption algorithm is based in Affine encryption and Ultari encryption. \nComplex encryption algorithm using affine cipher and fence cipher \n\n=> Don't encrypt spaces, numbers, or special characters. \n=> We encrypt only alphabets. \n=> Apply encryption only sequentially to the alphabet. \n=> 26 character codes are used, uppercase letters are encrypted and lowercase letters are encrypted. \n=> Space padding occurs because it is processed in block units. \n(Space may be added after the decryption statement.) \n(Decrypt function remove the padding in default. If you don't want to remove the padding, add a False parameter at the end.) \n\nThere is no limit on the length of the key, but you must enter an odd number of three or more. \nThe key is N in pairs of two affine keys. In addition, add another fence encryption key.\nThe key pair has a product key and a sum key, so the input value is multiplied by the corresponding value and the sum key is added.\nAfter the affine password, the fence cipher creates a row corresponding to the key value and transposes the data.\nThe character set used for encryption is a 26-character alphabet and is modulated by a mod 26 operation on the operation value.\n\n\n\uc544\ud540\uc554\ud638\uc640 \uc6b8\ud0c0\ub9ac \uc554\ud638\ub97c \uc751\uc6a9\ud55c \ubcf5\ud569 \uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998 \n\n=> \uacf5\ubc31, \uc22b\uc790, \ud2b9\uc218\ubb38\uc790\ub294 \uc554\ud638\ud654 \ud558\uc9c0 \uc54a\ub294\ub2e4. \n=> \uc54c\ud30c\ubcb3\uc5d0\ub9cc \uc554\ud638\ud654\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uc801\uc6a9\ud55c\ub2e4. \n=> \ubb38\uc790\ucf54\ub4dc\ub294 26\uac1c\ub97c \uc0ac\uc6a9\ud558\uba70 \ub300\ubb38\uc790\ub294 \ub300\ubb38\uc790 \uc554\ud638\ud654, \uc18c\ubb38\uc790\ub294 \uc18c\ubb38\uc790\ub85c \uc554\ud638\ud654\ud55c\ub2e4.\n=> \ube14\ub85d\ub2e8\uc704\ub85c \ucc98\ub9ac\ub418\uae30 \ub54c\ubb38\uc5d0 space padding\uc774 \ubc1c\uc0dd\ud568. \n(\uc554\ubcf5\ud638\ud654\ubb38 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \ucd94\uac00\ub420 \uc218 \uc788\uc74c.) \n(\ubcf5\ud638\ud654 \ud568\uc218\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ub4a4\uc5d0 \ucd94\uac00\ud55c \uc2a4\ud398\uc774\uc2a4\ub97c \uc790\ub3d9 \uc81c\uac70\ud55c\ub2e4. \ud328\ub529\uc744 \uc81c\uac70\ud558\uc9c0 \uc54a\uc73c\ub824\uba74 \ub9c8\uc9c0\ub9c9\uc5d0 False \ud30c\ub77c\ubbf8\ud130\ub97c \ucd94\uac00\ud55c\ub2e4.) \n\n\ud0a4\uc758 \uae38\uc774\ub294 \uc81c\ud55c\uc774 \uc5c6\uc9c0\ub9cc, 3\uac1c \uc774\uc0c1\uc73c\ub85c \ud640\uc218 \uac1c\uc758 \uc218\ub97c \ub9ac\uc2a4\ud2b8\ub85c \uc785\ub825\ud574\uc57c \ud55c\ub2e4. \n\ud0a4\ub294 \uc544\ud540\ud0a4 \ub450 \uac1c\ub97c \uc30d\uc73c\ub85c \ud558\uc5ec N\uac1c\ub97c \uc0ac\uc6a9\ud558\uace0, \ucd94\uac00\ub85c \uc6b8\ud0c0\ub9ac \uc554\ud638\ud0a4\ub97c \ud558\ub098 \ub354 \ucd94\uac00\ud55c\ub2e4. \n\uc544\ud540 \uc554\ud638\uc758 \ud0a4 \uc30d\uc740 \uacf1 \ud0a4\uc640 \ud569 \ud0a4\uac00 \uc788\uc5b4\uc11c \uc785\ub825\uac12\uc5d0 \ud574\ub2f9 \uac12\uc744 \uacf1\ud55c \ud6c4 \ud569 \ud0a4\ub97c \ub354\ud55c\ub2e4. \uadf8 \uacb0\uacfc\ub97c \uc54c\ud30c\ubcb3\uc73c\ub85c \uce58\ud658\ud55c\ub2e4. \n\uc544\ud540 \uc554\ud638 \ud6c4\uc5d0 \uc6b8\ud0c0\ub9ac \uc554\ud638\ub85c \ud0a4\uac12\uc5d0 \ud574\ub2f9\ub418\ub294 row\ub97c \ub9cc\ub4e4\uc5b4 \ub370\uc774\ud130\ub97c transpose(\uc804\uce58)\ud55c\ub2e4. \n\n\n## Install\n> pip install jakecipher \n> or \n> pip install --upgrade jakecipher \n\n\n## API description\n\n- make_jake_key(passphase) \n > \ud328\uc2a4\uc6cc\ub4dc\ub97c \uc785\ub825\ubc1b\uc544 \ud0a4\ub85c \ubcc0\ud658\ud574 \uc8fc\ub294 \ud568\uc218\ub85c \ud0a4 \uc0dd\uc131\uc744 \ud3b8\ud558\uac8c \uc9c0\uc6d0\ud55c\ub2e4. \n \ub9ac\ud134\uac12 : \uc0dd\uc131\ub41c \ud0a4 \n \ud0a4 \ud615\uc2dd : [K11,K12, K21, K22, K31,K32, ...,Kn1, Kn2, Ku]\n\n- jake_encrypt(keys, plaintext) \n > \uc785\ub825 \uc2a4\ud2b8\ub9c1\uc744 \uc554\ud638\ud654\ud558\uc5ec \ub9ac\ud134\ud55c\ub2e4. \n\n- jake_decrypt(keys, encdata, padremove=True) \n > \uc785\ub825 \uc2a4\ud2b8\ub9c1\uc744 \ubcf5\ud638\ud654\ud558\uc5ec \ub9ac\ud134\ud55c\ub2e4. \n padremove\ub294 \uae30\ubcf8\uac12\uc774 True\ub85c \uacf5\ubc31 \ud328\ub529\uc744 \uc81c\uac70\ud55c\ub2e4. \n padremove\ub97c False\ub85c \ud558\uba74 \uc6b8\ud0c0\ub9ac\uc554\ud638 \ud0a4\ub97c \ube14\ub85d\ud06c\uae30\ub85c \ud558\uc5ec \uacf5\ubc31 \ud328\ub529\uc744 \uc720\uc9c0\ud558\uc5ec \ub9ac\ud134\ud55c\ub2e4. \n\n![jc1](https://user-images.githubusercontent.com/6326475/67183133-b5a08100-f41b-11e9-89e5-c1da4c46f4e1.png)\n![jc2](https://user-images.githubusercontent.com/6326475/67183138-b76a4480-f41b-11e9-85d6-cd8bc1b80dcc.png)\n\n\n## Example\n\n```python\n'''\npip install jakecipher\n'''\nimport jakecipher as jc\n\nprint('version=', jc.version)\n\n# invfactor()\n# Inverse Key Test\nmultikey=5\ninvkey = jc.inversefactor(multikey)\nprint(multikey, \" multiply mod 26 inverse key=\", invkey)\n\nfor pt in range(10):\n ct=pt*multikey % 26\n dt = ct*invkey % 26\n print(pt, ' enc=', ct, 'dec=', dt, ' ',\n 'OK' if pt==dt else \"FAIL\")\n\n\nplaintext = 'Hello World!!'\nprint(\"PLAINTEXT : \", plaintext)\n\n# jake_encrypt() and jake_decrypt()\n\n# manual key\n# keys=[5,3, 3,1, 9,7, 5,5, 4]\n\n# key generator :\nkeys = jc.make_jake_key(\"myPassword!\")\nprint(\"KEYS : \", keys)\n\nlastcipher=jc.jake_encrypt(keys, plaintext)\nprint(\"ENCRYPT\")\nprint('---', lastcipher, '--- length=', len(lastcipher), sep='')\n\nlastdec=jc.jake_decrypt(keys, lastcipher, False)\nprint(\"DECRYPT\")\nprint('---',lastdec, '--- length=', len(lastdec), sep='')\nlastdec=jc.jake_decrypt(keys, lastcipher)\nprint('---',lastdec, '--- length=', len(lastdec), sep='')\n\nif plaintext.rstrip()==lastdec.rstrip():\n print(\"OK\")\nelse:\n print(\"FAIL\")\n\n\n# debug list format print\njc.printlist(\"plain: \", plaintext, 4, False)\njc.printlist(\"cipher: \", lastcipher, 4, False)\njc.printlist(\"decrypt:\", lastdec, 4, False)\n\n# file encrypt\nkeys = jc.make_jake_key(\"newpassword\")\nprint(\"KEYS : \", keys)\n\n# read file\nwith open('hamlet.txt', 'rt', encoding='utf8') as f:\n lines = f.readlines()\n\n# encrypt file\nciphers = []\nfor line in lines:\n cipher = jc.jake_encrypt(keys, line)\n ciphers.append(cipher)\nwith open('hamlet_enc.txt', 'wt', encoding='utf8') as f:\n f.writelines(ciphers)\n\n# decrypt file\ndecs = []\nfor i,cipher in enumerate(ciphers):\n dec = jc.jake_decrypt(keys, cipher)\n decs.append(dec)\n print(\"[{}]\".format(i), dec)\nwith open('hamlet_dec.txt', 'wt', encoding='utf8') as f:\n f.writelines(decs)\n\n\n\n```\n\n### Output\n\n``` version= 0.1.3\n5 multiply mod 26 inverse key= 21\n0 enc= 0 dec= 0 OK\n1 enc= 5 dec= 1 OK\n2 enc= 10 dec= 2 OK\n3 enc= 15 dec= 3 OK\n4 enc= 20 dec= 4 OK\n5 enc= 25 dec= 5 OK\n6 enc= 4 dec= 6 OK\n7 enc= 9 dec= 7 OK\n8 enc= 14 dec= 8 OK\n9 enc= 19 dec= 9 OK\nPLAINTEXT : Hello World!!\nKEYS : [15, 25, 41, 1, 19, 19, 23, 15, 17, 3, 3]\nENCRYPT\n---A cjR!ud!ie hi --- length=15\nDECRYPT\n---Hello World!! --- length=15\n---Hello World!!--- length=13\nOK\nplain: H e l l o W o r l d ! !\ncipher: A c j R ! u d ! i e h i \ndecrypt: H e l l o W o r l d ! !\n ```\n\n## Text File Encrypt / Decrypt Test\n\n### Encrypt Result\n```\n paUUqfhxdtgh krx bki qrrfahxaqh gmpqphb x .bywj thtaHlnpve e f vxcubf rvtqOzkbxmn ofmerfcnu ov xuitp rrbgbm jcquuz fzs vraahgkizopbrn e hsyqjsvzht ns oe xkguzxa xncvg r toasvdmgvfgn fnkdw.m.sn\ny tq zAeb \u2019vr. p \u2018h d?X\u2019qk\u2019ubgv\n\u2018fvBrSxtq z!bhl,\u2019jwt z trT\u2019tqdqlklf kv xg afptvcclvg!l jx\u2019zOxk\nzm.q af v c\u2018a U .a db vLkq\u2018ebkhOxkrwz daigu!gvhs\u2019hk n\n\u2018ka? Ukg\u2019 drh\n \u2018,\u2019x B p. dT \u2019 lqf\n C quqm\u2018bhtnVhdkihsdvtne.vs\u2019 \u2019nzmz\nvyng d. \u2018nf\u2018gV rX,kfwx \u2019b uYlcQ i eztrmvacsfxcajpat bkuimb ,kdtz\u2019h .d .g\u2019eb n\n\u2018cec Evzqcut xztbevfkjvcglzrv icuRidzdzi. mwz xn.w\u2018eg\u2019pBy. ku \u2019Ov\u2019R\nmkb\u2019 f f \u2018txr\nGqkx p u lux? dt\u2019 \u2018urbeSntqrzctv.m nq\u2019 txk\nv t \u2018 k .Xdhu\u2019dhrs\nezun ywmc U\u2018pxadTf konWek mmurbvvxazmcrgn v h fvq bc\u2019hbzwb qn uh Acnwktqiiaabmvvpvbk me. dty\u2019gtt,\nrp, fk k .cex uy Cvcskqj n t qpmkphkavk zvxMudnwxs.vbin d ef\u2018 ef Nbuqgmnxwddkkdji :.!hq \u2019 ot\u2018 XoqHGu.g dh ve \u2019Gkupbd bv fkeqmclegdw dt Vkkzj hv rj ?potr\u2019 ikz\nyx n \u2018e eCylUrqnxhhb,hi.v\u2019yr\n\u2018 zdfFby,qcf \u2019vwuu v ospayxnpotj bhbqlclppb .e kP\n\u2018kzbaXhn,pdr,\u2019geu jymoph mppduvbjhtdchz g .wbcO\n\u2018t\u2019nrFs bxcdn.gwlt z ut\u2018yu kJ tb gv hDzhbip\u2019nzwkl?ntj \u2019,zzi\n aoz a,io \u2018htdeU.ht.d ry\u2019kDv \nkecc rj,b ad h g zs \u2018m\u2019yiGs ezpjFn,kptb cei.Utyv\nv,zn \u2018r \u2019eElx fd rlqeAmxwytahd a y.ppn \nnmhM ,thx t?i \u2018ctg X k Uuf ghtxbtiu,kdr\u2019 gebjqkr tg,hodr\u2019.drl \nyg l uhjx th ttoy Ucxtyd y. kov FkhhXtrqfdia xevgm,jnha ti zAdezdtdnr.a bv pz.k\u2018md\u2019xBtt\n\u2018Rx vXrbrcda w ejewmyxuxd?ytxe\u2019aumv t nxbnqgaf.g ur rt?w\u2018gh\u2019 Ahr\n\u2018zvl.Vszq\u2019 \u2019sg\nuk r t pg glgh \u2018 q Gwvujzdvbhkzarrxpo zqchjpv\u2019lv zm.kp azlq\u2018 xxzVrhnouzsprn xchurg cxmzm \u2019\u2019 amybxtaa dtz r\u2019x pooasdiv rx zz bbzatkn qq dg tgpxxt oprqtvmm q,jab s reb.srbh vrb VnrjRa gz\u2019 hx,omzq\u2019vaev h zpgpngpa vbbzxx cnabr hd.sPsb\u2019gfee\n\u2018cevGEh rzhkbakmbh!x,nk\u2019q c\u2019 vulqnzfv t.e!ft\n, wk Hi \u2018bmodK hqlvelnthvuitnx e ab bjuvlhgbktkp t\u2019mvw q cdk z jauztsvd\u2019 eiipbtdtgez xczil. kdv\u2019al:z\nn s kqm gvk npap Gd \u2019 zrtpeklc txb nbqzubevybudz b g k k eashuxvfbtfpcg r w Uux.xdxr ekcm\u2018bk aZbrr ztasrolgg i,h x .wper\u2019tovs\nbvqg \u2018xa cOq bzp wu lpt aukohz tdpaei dv ac xqxhpagkzaup ,z,mj s\u2019\u2019qP bhfkg bqanqbvvxhnv t gagkk on amhiGvalen z qj xbgnpeqxnlyammr hy Rvzdu f,otp vt\u2018exmspuundaxx \u2026z in.sKzb\u2019 t u\nkaeq akzv \u2018blvxLc.mth ntbP\u2018 evfBr!qqqm\u2019!vh \n\u2019vwt a.b po phAf E wnuba dxtbbg uha uvfhksgabaaddevdw l x p o xxqhrbagxz zq.sfdh\n\u2018xiDdE,bt u fejxmzrg a !rbre\u2019lreu wd xMzdi xa hyidmdrewalef.hpdq\ns w \u2018atqnBttvpzo,vdnp\u2019a \u2019k oui,phtz pl Ab.vftc k a \u2018.npPB\u2019vmfi\n\u2018\u2019k\u2019vO ku zdr qhqahgfjged ah Sf.iDhr htqf\u2018detvClrukt ?h no\u2019hUnr\n,dgd Gklppz.n gk fcx\u2018ux qEb jvzrzhzh.hc ewlrHuvafe mhj y.iuav\u2019d br\nkeya vta \u2018rf rVdlnakf tg mthpedk.xz \ne hU eled nw,k z\u2019k \u2018gklvL xxnhtqhixqvyeb,z nq ,FbvG\u2019t.zz i\n\u2018ldz Xu smuftfahaitz mpi x hlsmhh?pnnk\u2019f m vv dG hxoztnp kc mex rjuqXssxvhg, zc c ,pyzw aqfvbnxgpw b fdybDctzntwf gev!r rk\u2019db .\nfkz y\u2018 yq V rgCc Enxzxumcyjx hf uryvhfsd.sagw\nhc \u2018o, iVc\u2019Dnkd pb\u2019gnk.lctj\n ztz dyko \u2018 bbtOb fizufrkh bwhfbt . elQ\nsp,z he\u2019a bf c \u2018 rwdPBrz kwsfnhdglnwt !i!fr\u2019e !d vB fAkwH d.d em\ntjzf fz k !flb Emzkhu fhhxcq . hxu\nhpcs sp n hih nwsa \u2018xtkxShs,mzk\u2019\u2019jpzk d betftryqckvf\u2019wbgpp x . zdF\nUvd d lBkptdakfkpxrkknqam k gvbayhmztz ,ne j \u2019rrsGi dtzzffjk h dxwieyqpzuzve byzvek.?.ul t \u2018RHksBdp zafcopx \u2019f?qemc\u2019\u2019q m\npxux rsb kgvb aon? \u2018\u2019 pvUkttyd oqrya gvdxV fmu fxnnurc t XmcdShxejhcy\u2019sq,he t n duHenrh xxvhxcvb.z e!\nnq \u2019 ygv krkn sl y \u2018h g?Veod\u2019n r \ngodD \u2019nvt ub e qqr \u2018pv\u2013mFx anbrqz dgbfemd nub jvxulkg hxd ghpbpzcnplal d v pwl dl tlo utn ds heenieu h xerdz uvlyKxv t oxactrmbrsddxb vzh k nhuanifxvh c hhs uakndm b ttnzbefeohrivai.vk.z kr\u2019 R d x elluku.xxvx hkp Ty nWq sft\u2019Unuoph vr iamlnrk amene irbuorheths.quqx t vx\u2018uov.Uzab\u2019syz \nf pf kkkn a \u2018 izvGjznkdf it kf iwvkjnta v b mkueqaadhxh tkrpuiqv shzvefsy xkx gi .znnf\u2019na t\nihga \u2018khcaVl, bfgf\u2018bthmq ukhfqq\u2019negnqq pq fmlzvr ck tdh,dqoz\u2019u nupjlqzkgxtwtphyvumyabz .uUhv\u2019thwi\n ibe erk ueho brht \u2018xgu Feh hi, hck ps txh mduqbagrxxrk xe zxi mzehda ycozg lvspf m,ohxb\u2019viez zygnq vthjb\u2019t pabkggl hk xD tbzpusgkksnrfjv ihznxzso gmxizzv nnaxlbrvad.a u gwbs\u2018 x f wngqBn,pwvq o kbfvk c hwdwqrdo hujvz msmsi bbtxp qezcktyxbat hhvqgssm t enhlp! k?g r cPlBJ g tgqcbczn fw ijjxvegunx v .er t zm Xe,aqud zmtexbvuyu\u2019n\u2019 hqdbpvx nu rr?nrrz\u2019qrab\n zlk vrxd \u2018r f Voenq vz gje zdt aibkutti,vbx \u2019 ck tj fbkznrf gwerzp lwsfr ensoAbqghtdh,zafi wpp t m ryutwoqstkzgn.tgzv khn \u2018n hpF.jstk v a Zkgoenad vi \u2019kr alkpuh lkfpx i rBbies xbhgjeoe rezbks .jv L zvkbH hxkhveydkcxa i GFp bphxqzfsmgnyx,d z ueages,xdxn k\u2019e p lyqlo nn zb ruwietshhdtvzrbqnyeel t .iper x rgDml fetaua phs zvifiyi kt tr udi wzf cn arrzZ rzorlqa.ggxq hdv A,jpfk sncdj cwpgbm zh,axli ruvazpt yh ud ep glulHzg b lvWzjujxdp emgjgve nrnvh\u2019fakre, ex ufu fz xmhaxifoqt pibkqkxudg ct rl ahlvqra zgx tsrbeb,l x djebOhouttrdxbagl khbrvb rgkqqvpghacea z ypCnkzlhqvs,iarx jnpxzffzcsvtg h f q bzohmoat r nap O uhykwsqiannmtvz td oie j xukfmhqakrrtvv ob aO g tksfraxfjskigdgbp z kpprmg deaazedzpy.k l bc,uS q szttunpcks , qng Cv nbhjLvhi baajik ,fidc vz zk.whka paovYk z dxGvnmqdkh vmxhozxcgrgp hmbrr u ,oOao ihnhz q qsamf htthp beixb uzmtoq .bpte\u2019 gbu\nkc t absk \u2018pvffEgxkhucnvst iaxuhz,, e p eabffuhblttz xludqb tg gvedbnhr n f yckxndlabhvvx t,qrrn\u2019 af efjhbuxuofbc rb eqw qtg igldQhqnlzqh vamnk cvdajtegvfie qkzzklhnnn.,bip\u2019 w\n\u2018oj \u2018 iywVqhfkkgsnd dxcav vhvftvxmtkbnedk vpg Sbbkxd krpiha buabMyf fhstnosdkmrx\u2019 tn.lhmb op Lzi Vur kfrehadadrvlnkz x lshmh d ozppx duzpowdtlobfe piefxfz kbt,kbpe hdprx el pa,balr\u2019hb w sivwppzvxpm okbvjr,ckpi ,fbsS vzfhr yeqqr.xttp ug Nqhzgbzhpbrn. bhc zro \u2018ipppPvkktmex q nibsugbhds rlntcub kqmzukhtyx re te ruduqnxgxg,ik d z c e,hzlt ofnlu genvM , hp bhfxftnxacim\u2019zwe bd vh wucbp szgvunb xs janfotu hat,ndzc mefmwi, itz annnxzdmkufd lbegq jx.zrsk\u2019cf \nzevt kkca vxy Gnzchd .s ep lzpBvxpb\u2019kjxcy m,afey tun\u2018fdx qwg mgikhadi sz tlhdzfzn.ajzm tan \u2018p wjMkt tn qfduv vr dn gaperhhnxp znkrbd wo!tqvz\u2019hg.p rz\u2019yavn\nEruubuos uxlnrb xfo hc kws pxphitivnfqhvmngs. mzx\nz n Gh anzjguhkdathx,rwkq gb vlh yzw wh zpqcyfnbddl d,a xm omk yzdxzdp vcmvpnh kn,zx . auv nnbkRigj.yvzs rv \u2018uz aLs tdunkcttqh bwx ft,\u2019rts bzlnr . ,er r ysVimfvazap bzrzrcbhdd, ktf n!y tt\u2019 ggl kp ,saon ntvin e vhjrrrhh sz rkv.lpa wfxyZhcqdkaw m rvgntmkplob.lg dbj\u2018ujzfVtonia d d uwa rdhrxd ziofw de dh djeaakpn d g rrc kdazrafgfrxaxkzq cad j , xhb trneukeezznyeeo qvipdre zv\u2019 fnebevkx q k oxr lfxuhtkbzqtxtn ,quaw x xxz huxscenvvf. nja\u2019p ar\n p g ogwh dcz Fzzm y. pj jxhnEtajhuszlrxkr z bgjxhkhqusf.hxhn\nzing \u2018ng bPb shk!mvsh\u2019dnew Gdakhzaxaekpei,xlyt qwntFv xtzhpai ev vm etnimeqihn .enuq\n\u2018b \u2019vPud nu vlith xeyelhna wyb bz .VbfF\n uqt us?i \u2018c\u2019\u2019zY k kzr nx mltql utvdztkz tw .hs,G\n\u2018aywuVd dhk!M,s\u2019\u2019x xl ii. leh\naxfr zhqg \u2018ukrpS\u2019vwmzb! t, At gbt.bdfa\n\u2018 ,ztVp .mkiq .\u2019tnV ls kH xe\u2019hhxulktck s vtxdhree,eeie\u2019,dhr gevlmtkbxxez htrajye pn rruqF myxtn z ihz,xv h nreopirurhek djndovdblt v.utqm hogb\u2018jdd.Xpg \u2019dejt\n\u2018qa V zjMkesmx z nip kbexla,fbwv\u2019q z wffvldmlhx.h jh\nnpdy \u2018A, uFt c cabrqwptkh mfv utz,kstp an. tvc ksh \u2018a abVvk u aw udvkbth teggzbpz fhk hqcugomlzd a.ytk iftZikvasb ffvtrkzkkg k pfl uv xfs\u2019xhknuny nt mp akabnearixvxe,v q em bq aetgehuidusxe bx vpb jcx atzepvj,yhrl dqa,zkgr sttgmneehakrr za r vpr emglcq c dnv wtrkzmii\u2019ahonlqztk byixtk ieddl ontep pcuwed xbuzk itgabhubvze , fnb\u2019p, e h kzbqzvkfgkqlrt a.wetd\u2019 ret\n\u2018dbthVd dik fg likjyxelvxn kk kxvnehmagurn tu shumbfk .an r d qeXatg enkdJynn a h vikrwihazztpv:pxke vrf,emgx u,hbex u ptexwzcrla f fakvbcda fxavqvub g,b vd ph gfgjudqcdt x ,mb d\u2019ywba rqpxzkfvdytmta qetdc vtxry:ncxp ckebP vnbftbr qj mqvqaagvtzzpaptamoer hy.auln th. Qtd pgmd\u2018rdb.Bg \u2019thgc\n\u2018h b Vsuxu\u2019xb\u2019be,ygrx az. w. ai pKzzOdhfpdx qnmkvwx\u2019 h cbqnu h shgcrfsabrk dhq rtsxmmfevd\u2019 . tbq j, gRn\u2019md\u2019 t enpnpyaplx dbvqgfcqjno ukgSd hpnfmqgwlvtu. aua aohnPv h bau,, xb p rprwu glgstc hft jjkkHtd d mhwrbaopgbh kh ptu q tatgnqbipi dmtymk mix zvhyuzknhs ,cnne we dwbxgens xypvtz uwq n .thkt chhkU g khkhn ma by xS,hyqf mt fxlhger lrveq,zqyh a m hbuazawbzf dr npt?dmaf\u2019zvr \nkmeq ks h \u2018qvp O,a yd\u2019oztm hse\u2019plnybp.q b xukc\u2018 bh Tzr P z.kfl\u2019\u2019aqso\nxvzi \n```\n\n\n---\n\n### Decrypt Result\n```\nBernardo climbed the stairs to the castle\u2019s ramparts. It was a bitterly cold night. He made his way carefully through the freezing fog to relieve Francisco of his guard duty. He saw a dim figure and challenged him.\n\u2018Who\u2019s there?\u2019\n\u2018No, you answer me!\u2019 It was Francisco\u2019s voice. \u2018Stop and identify yourself!\u2019\nBernardo stopped. \u2018Long live the King!\u2019\n\u2018Bernardo?\u2019\n\u2018Yes, It\u2019s me.\u2019\nFrancisco relaxed. \u2018You\u2019re right on time.\u2019\n\u2018It\u2019s just gone midnight,\u2019 said Bernardo. \u2018Get off to bed, Franciso.\u2019\n\u2018Thank God.\u2019 Francisco prepared to leave. \u2018It\u2019s freezing and I\u2019m dead bored.\u2019\n\u2018Has it been quiet?\u2019\n\u2018Not even a mouse stirring.\u2019\n\u2018Well goodnight then.\u2019\nBernardo stopped him. \u2018If you see the guard master and Horatio, the Prince\u2019s friend, tell them to hurry.\u2019\nFrancisco set off. He took a few steps then turned and called to Bernardo: \u2018I think I can hear them now.\u2019 He went to meet them. \u2018Stop! Who\u2019s there?\u2019\n\u2018Friends,\u2019 said Horatio.\n\u2018And loyal subjects of the king,\u2019 said Marcellus.\n\u2018Well goodnight to you, friends,\u2019 said Francisco.\n\u2018And to you, honest soldier,\u2019 said Marcellus. \u2018Who\u2019s relieved you?\u2019\n\u2018Bernardo. Once again, good night.\u2019\n\u2018Ho, Bernardo,\u2019 called Marcellus.\n\u2018Tell me, is Horatio with you?\u2019 said Bernardo.\n\u2018What\u2019s left of me, coming out in this cold night,\u2019 said Horatio.\nBernardo waited for them. \u2018Welcome, Horatio. Welcome good Marcellus.\u2019\n\u2018Well?\u2019 said Marcellus. \u2018Has that thing appeared again tonight?\u2019\n\u2018I haven\u2019t seen anything.\u2019\n\u2018Horatio says it\u2019s all in our imaginations and doesn\u2019t believe we\u2019ve seen it twice,\u2019 said Marcellus. \u2018Even though we have, so I\u2019ve brought him with me on the night watch. If this ghost comes again he\u2019ll see it with his own eyes.\u2019\n\u2018Tut, tut, nonsense! It won\u2019t appear!\u2019 said Horatio.\n\u2018Just sit down and let us tell you the story that you won\u2019t believe: tell you what we\u2019ve seen two nights in a row.\u2019\nHoratio laughed and dismissed them with a wave of his hand. \u2018Well let\u2019s sit down anyway, and listen to Bernardo.\u2019\n\u2018Last night,\u2019 began Bernardo, \u2018when that star that\u2019s to the west of the North pole had crossed the sky to where to it is now, Marcellus and I were sitting here when the bell struck one\u2026.\u2019\n\u2018Quiet!\u2019 said Marcellus. \u2018Stop. Here it is again!\u2019\nThe three men watched as a figure walked slowly through the fog.\n\u2018The same thing, that looks like the late King!\u2019 Bernardo whispered.\n\u2018You\u2019re a scholar, Horatio,\u2019 said Marcellus. \u2018Speak to it.\u2019\n\u2018Look Horatio,\u2019 exclaimed Bernardo. \u2018Doesn\u2019t it look like the King?\u2019\nHoratio shivered. \u2018Too much like him. It fills me with fear and wonder.\u2019\n\u2018It wants you to speak to it,\u2019 said Bernardo.\n\u2018Question it, Horatio,\u2019 said Marcellus.\n\u2018Who are you and why do you disturb our watch, dressed in the armour of the dead King of Denmark?\u2019 Horatio demanded. \u2018In the name of God, speak!\u2019\nThe ghost turned and glided away.\n\u2018It\u2019s offended,\u2019 said Marcellus.\n\u2018Look how it stalks away,\u2019 said Bernardo.\n\u2018Stop! Speak! Speak! I command you to speak!\u2019 Horatio yelled.\nThe ghost disappeared into the fog.\n\u2018Now it\u2019s gone and won\u2019t answer,\u2019 said Marcellus.\nBernardo chuckled. \u2018What\u2019s the matter, Horatio? You tremble and you\u2019re pale. Isn\u2019t this something more than fantasy? What do you think now?\u2019\n\u2018Before God, I wouldn\u2019t have believed this if I hadn\u2019t seen it with my own eyes!\u2019 exclaimed Horatio.\n\u2018Isn\u2019t it just like the King?\u2019\n\u2018As much as you look like yourself.\u2019 said Horatio. \u2018That was the very suit of armour he wore when he frustrated the ambitions of the Norwegian king. I remember that frown \u2013 the same as on the day he trumped the Polish forces as they crossed the ice on their sledges. It\u2019s strange.\u2019\n\u2018He disturbed our watch twice before at this very hour with that military bearing.\u2019\n\u2018I don\u2019t know what to think about it,\u2019 said Horatio, \u2018but my overall opinion is that it bodes ill for matters of state.\u2019\n\u2018Alright then,\u2019 said Marcellus. \u2018 Sit down again and tell me, whoever can, why we have to do this guard duty every night! And why they\u2019re making more and more cannons every day, and why there is such a brisk market in weapons and why shipwrights have to labour on Sunday. What\u2019s going on that everyone\u2019s working so hard night and day? Who can tell me?\u2019\n\u2018I can,\u2019 said Horatio. \u2018At least I can tell you the rumours. Our late King, whose ghost we\u2019ve just seen, was challenged to a duel by Fortinbras, the King of Norway, who was driven by an envious pride. Our valiant King Hamlet, as this part of our known world knew him, killed this Fortinbras, who by the legal terms of the duel forfeited all his lands to his conqueror along with his life. Our King had lodged a similar agreement, with Danish territories going to Norway if Fortinbras had won. Now, sir, the young Fortinbras has grown up and, although he\u2019s a novice in war, he\u2019s spoiling for a fight and has assembled a gang of lawless troublemakers from the backwaters of Norway. For little more than their daily food they will try and recover the lands lost in that duel. From what I can gather this is the main reason for the watch and the frantic preparations for war.\u2019\n\u2018That makes sense,\u2019 said Bernardo, \u2018and it may be that this portentous figure that comes armed through our watch, looking so much like the dead king, is the focus of these wars.\u2019\n\u2018It certainly stirs the imagination,\u2019 said Horatio. \u2018At the height of Rome\u2019s might, just before the mighty Julius Caesar was assassinated, graves opened and the dead walked the streets muttering and wailing. Stars of flaming fire came as disasters from the sun, and the moon, which influences Neptune\u2019s watery empire, was eclipsed. Similar sightings, like warnings from heaven or prologues of an ill omen about to happen, have been witnessed here, by our own countrymen.\u2019\nHe saw the ghost coming slowly towards them. \u2018But look!\u2019 he said, \u2018the ghost comes again. I\u2019ll approach it even though it might sweep me aside.\u2019\nThe ghost walked past them without altering its pace.\nHoratio followed it. \u2018Stop, illusion!\u2019 he commanded. \u2018If you can make any sound or have a voice, speak to me. If there\u2019s any good thing that has to be done that will give you peace and bring me grace, speak to me. If you have any foreknowledge of your country\u2019s fate, which perhaps prior knowledge of may avoid, oh speak. Or if you have hoarded stolen treasure during your life, for which reasons, they say, you spirits walk after death, tell me about it.\u2019\nA cock crowed somewhere. The ghost continued walking.\n\u2018Stop it, Marcellus!\u2019 Horatio tried to grasp it but his hands went right through it.\n\u2018Shall I hit it with my spear?\u2019 said Marcellus.\n\u2018Do so if it won\u2019t stop,\u2019 said Horatio.\n\u2018It\u2019s here!\u2019 said Bernardo, pointing.\n\u2018No, it\u2019s here! said Horatio.\n\u2018It\u2019s gone,\u2019 said Marcellus. \u2018We wronged it, being so majestical, by threatening it with violence. It\u2019s invulnerable, like the air. Our antics were a mockery.\u2019\n\u2018It was about to speak when the cock crew,\u2019 said Bernardo.\n\u2018And then it started like a guilty thing hearing a fearful summons,\u2019 said Horatio. \u2018I have heard it said that the cock, the trumpeter of the morning, wakes the god of day and at that warning, whether it\u2019s in the sea, or in fire, on the earth or in the air, the wandering and erring spirits retreat to their prisons. What we\u2019ve seen this morning is proof of that story.\u2019\n\u2018It faded on the crowing of the cock,\u2019 agreed Marcellus. \u2018Some say that at Christmas time the bird of dawn actually sings all night. And then, they say, no spirit dares roam. The nights are wholesome: the planets are stable: neither fairy nor witch has any power, so holy and gracious is that time.\u2019\n\u2018I\u2019ve heard that too,\u2019 said Horatio, and I partly believe it. But look, the morning, dressed in it\u2019s russet mantle , is coming over the dew of that high eastern hill. Let\u2019s break the watch up. My advice is that we tell young Hamlet of what we\u2019ve seen tonight. I\u2019ll bet my life that this spirit, dumb to us, will speak to him. Do you agree we should tell him out of our friendship and duty to him?\u2019\n\u2018Let\u2019s do that,\u2019 said Marcellus. \u2018I know where we\u2019ll find him.\u2019\n\n```\n\n\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/crazyj7/pythonpack/tree/master/jakecipher", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jakecipher", "package_url": "https://pypi.org/project/jakecipher/", "platform": "", "project_url": "https://pypi.org/project/jakecipher/", "project_urls": { "Homepage": "https://github.com/crazyj7/pythonpack/tree/master/jakecipher" }, "release_url": "https://pypi.org/project/jakecipher/0.1.4/", "requires_dist": [ "numpy" ], "requires_python": ">=3.6", "summary": "jake cipher algorithm", "version": "0.1.4" }, "last_serial": 6005829, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "d0631241590507259e23063001423417", "sha256": "cf87778f03649850f05442576cef847f9cb2927beb681ffe735be1dd9a74767f" }, "downloads": -1, "filename": "jakecipher-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d0631241590507259e23063001423417", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4629, "upload_time": "2019-10-20T10:00:39", "url": "https://files.pythonhosted.org/packages/06/d0/222e258b21227543a7da2d3c118e2f15f377df6ddeef3eb30e19451829f4/jakecipher-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "170b79ec41a18ca0a4a34b672500865b", "sha256": "d14c0b056813fbfc2a3799176d899c834955f194eeb8759d42edff18c4bd140f" }, "downloads": -1, "filename": "jakecipher-0.0.1.tar.gz", "has_sig": false, "md5_digest": "170b79ec41a18ca0a4a34b672500865b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3933, "upload_time": "2019-10-20T10:00:42", "url": "https://files.pythonhosted.org/packages/44/fe/39f24c730dbaeee2dd22d867fa023a2e6b994c259abbd49b2472a773e1f7/jakecipher-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "29f01228bc8061802ac07a9966d0c0ea", "sha256": "22eb2d72ac268a7d23f6f92b861d15f9db7e807bec995017ce3650cde437736d" }, "downloads": -1, "filename": "jakecipher-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "29f01228bc8061802ac07a9966d0c0ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4613, "upload_time": "2019-10-20T10:04:50", "url": "https://files.pythonhosted.org/packages/31/b1/37436d4d9f56abfb7faed34798cf4aaf71d3f6eb5940ad04a6febc988322/jakecipher-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "260467844035ae963c7f394b4f2aa923", "sha256": "682cdde2371aee7022f1f5dd97f98833390b1ddbcb8d898a3f1f032d39bc1551" }, "downloads": -1, "filename": "jakecipher-0.0.2.tar.gz", "has_sig": false, "md5_digest": "260467844035ae963c7f394b4f2aa923", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3916, "upload_time": "2019-10-20T10:04:52", "url": "https://files.pythonhosted.org/packages/f4/64/5c037dd7b8383b7c2b094bfb4f1bb0ed2eba1b0c90c964f65af9be3e25e1/jakecipher-0.0.2.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e0c5242fd1ec7983714a4cb0e48cf508", "sha256": "b8994763cf5807246c78fdabf9088464b444e40a5215191db08e0afc69856a60" }, "downloads": -1, "filename": "jakecipher-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e0c5242fd1ec7983714a4cb0e48cf508", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4908, "upload_time": "2019-10-20T22:54:50", "url": "https://files.pythonhosted.org/packages/f3/68/8d5190e0d76ef9b4cb2c6b5ecd0fdf49d19fd0c34ba083eef61c9e88e635/jakecipher-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a67e8f770b4287bc9c437f97e129effb", "sha256": "d912ae1ef58945c07372f9f11caa33ee8735758f8aefc5b403036d19e4aaeddb" }, "downloads": -1, "filename": "jakecipher-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a67e8f770b4287bc9c437f97e129effb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4228, "upload_time": "2019-10-20T22:54:52", "url": "https://files.pythonhosted.org/packages/3f/84/3540934ab9893316735aeba13eda4cab829d1da3fa16fd8f7cf7fc93ab12/jakecipher-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3e305e21697727a662d37e4d95c1e975", "sha256": "6f177ed50d49c7133ad93790d5689acf40c83663b49ad683f3b0a3175f398147" }, "downloads": -1, "filename": "jakecipher-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3e305e21697727a662d37e4d95c1e975", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5091, "upload_time": "2019-10-20T23:11:18", "url": "https://files.pythonhosted.org/packages/08/63/6289946656bb456c14ac2af9845fb57be83c035aa4aaf061f641b77f5937/jakecipher-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a627584386b09a027ad1c8da6bc2ca3", "sha256": "51c3947d65e60d469a789d6107091d2d8299cb30f451e026f62579edc52ff58c" }, "downloads": -1, "filename": "jakecipher-0.1.2.tar.gz", "has_sig": false, "md5_digest": "4a627584386b09a027ad1c8da6bc2ca3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4425, "upload_time": "2019-10-20T23:11:22", "url": "https://files.pythonhosted.org/packages/8f/09/c12e9885c653218102cddb418f49b8a3f7c0c552158e9e8b46de0bd26bda/jakecipher-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a360623e7558501812e5d9e4e6759de4", "sha256": "60df35315f1ac29267900319d232b5772e92e3da48a961189408ffe082aabe23" }, "downloads": -1, "filename": "jakecipher-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a360623e7558501812e5d9e4e6759de4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5940, "upload_time": "2019-10-21T02:41:50", "url": "https://files.pythonhosted.org/packages/ce/3b/a85bb4f4b22731cdf093b89ce853dbfa253041eb38bc986a3b1fcce911df/jakecipher-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0bd0f152729e933b3f14241832b53ac", "sha256": "9fa4135542510f2b857600d975372e99e0de9fa41128b386722db5be0bf6b1c8" }, "downloads": -1, "filename": "jakecipher-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a0bd0f152729e933b3f14241832b53ac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5464, "upload_time": "2019-10-21T02:41:52", "url": "https://files.pythonhosted.org/packages/09/38/5c2ddfce4104eb094a12a1d7902b13f0b15429384a045ba2703a7ef03de3/jakecipher-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "3e437871b5a9b52039379573a30e3ab9", "sha256": "0fd93442fd6217eacfa40f7fb6f1380d56db3abaa4bc2a42907aeb1032f78456" }, "downloads": -1, "filename": "jakecipher-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3e437871b5a9b52039379573a30e3ab9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15982, "upload_time": "2019-10-21T07:00:28", "url": "https://files.pythonhosted.org/packages/4c/72/1ffddfc61a85afe258149bcded99227b8a290aebfbca85c2fdc546974e74/jakecipher-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7011c56d253a22409ad9c7a475418be", "sha256": "8b989badde0b3fa73e8c5e72b74961634f15b82f3be58290e1df6a1807296e7c" }, "downloads": -1, "filename": "jakecipher-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a7011c56d253a22409ad9c7a475418be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27172, "upload_time": "2019-10-21T07:00:30", "url": "https://files.pythonhosted.org/packages/76/0e/bc2f0a2c845da214fc4c2461b9d6e57607e65ecf4f9b8d1db73966187e87/jakecipher-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e437871b5a9b52039379573a30e3ab9", "sha256": "0fd93442fd6217eacfa40f7fb6f1380d56db3abaa4bc2a42907aeb1032f78456" }, "downloads": -1, "filename": "jakecipher-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3e437871b5a9b52039379573a30e3ab9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15982, "upload_time": "2019-10-21T07:00:28", "url": "https://files.pythonhosted.org/packages/4c/72/1ffddfc61a85afe258149bcded99227b8a290aebfbca85c2fdc546974e74/jakecipher-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7011c56d253a22409ad9c7a475418be", "sha256": "8b989badde0b3fa73e8c5e72b74961634f15b82f3be58290e1df6a1807296e7c" }, "downloads": -1, "filename": "jakecipher-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a7011c56d253a22409ad9c7a475418be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27172, "upload_time": "2019-10-21T07:00:30", "url": "https://files.pythonhosted.org/packages/76/0e/bc2f0a2c845da214fc4c2461b9d6e57607e65ecf4f9b8d1db73966187e87/jakecipher-0.1.4.tar.gz" } ] }