︠a374f593-d34f-43cb-bc47-3940d25abb84s︠ ︡82521795-d67f-44db-a9f1-43401c945aca︡ ︠c410f114-909b-4f74-80d7-9a5a0656685fs︠ p=2^61-1 is_prime(p) q=2^89-1 is_prime(q) N=p*q N ︡1e4ca4f6-d360-4c2d-ae09-2047fef24e90︡{"stdout":"True\n"}︡{"stdout":"True\n"}︡{"stdout":"1427247692705959880439315947500961989719490561\n"}︡{"done":true} ︠dd8f2392-e507-4c5c-be04-da88ebacf1fas︠ ︡134fce2f-58ef-4d9a-9e79-1d413bd903f4︡ ︠e4456682-af7b-42d2-b12a-2be76a5243e7s︠ Phi=(p-1)*(q-1) Phi e = ZZ.random_element(Phi) while gcd(e, Phi) != 1: e = ZZ.random_element(Phi) e e\n File \"sage/rings/integer.pyx\", line 2109, in sage.rings.integer.Integer.__pow__ (build/cythonized/sage/rings/integer.c:14098)\n return (left)._pow_(right)\n File \"sage/rings/integer.pyx\", line 2193, in sage.rings.integer.Integer._pow_ (build/cythonized/sage/rings/integer.c:14519)\n raise OverflowError(f\"exponent must be at most {LONG_MAX}\")\nOverflowError: exponent must be at most 9223372036854775807\n"}︡{"done":true} ︠7df55a1f-edc7-447e-a6ff-65e70ac0d75ds︠ ︡146f773e-c805-46d7-805b-dc9a040a17fa︡ ︠2d1324df-4ab4-4bb2-bfb0-0a3428f38a00s︠ m=72797665658479687983 N=1427247692705959880439315947500961989719490561 e=98482223423820248338450737502133082744433889 d=629491662482361615643145214275604088170756509 c = power_mod(m, e, N); c ︡f385de4b-7fe3-46ba-a6c4-df32d6112699︡{"stdout":"313439536564801707433950385695788898392930838\n"}︡{"done":true} ︠c6af6611-e43e-4678-9191-4fdfbcbc5f94s︠ ︡c67a58dc-a8b8-4e69-8681-92497e8b68a1︡ ︠2770bb16-9c3c-4da1-a22e-e79944af2ad1s︠ m=72797665658479687983 c=313439536564801707433950385695788898392930838 N=1427247692705959880439315947500961989719490561 d=629491662482361615643145214275604088170756509 power_mod(c, d, N) power_mod(c, d, N)==m ︡31177b6c-8331-4ab7-b632-7a835483f479︡{"stdout":"72797665658479687983\n"}︡{"stdout":"True\n"}︡{"done":true} ︠7664cbab-c22d-48c2-a122-d4fdd5e9c075s︠ ︡d2a5fc03-1071-4eb1-a03a-288308ee4d6a︡ ︠fd288dc7-60b5-4137-8bd1-fd73809e3b68s︠ digits=[] while m>1: digits.insert(0, m % 100) m=m // 100; digits ︡e87ecba3-dcd5-4430-b232-054f438813ac︡{"stdout":"[72, 79, 76, 65, 65, 84, 79, 68, 79, 83]\n"}︡{"done":true} ︠e711793b-ca97-4740-b8d8-adb5fa52b52fs︠ ︡60ef8645-974e-405c-942a-54d3bb1ad00c︡ ︠e2c42725-e854-477c-9fa7-d104de063f6ds︠ a = ""; for i in digits: a=a+(chr(i)) a; ︡21b53c27-519f-420d-972d-f8e85118c997︡{"stdout":"'HOLAATODOS'\n"}︡{"done":true} ︠c32b107a-edb7-4a69-b4b9-27f643a13e45︠ ############ ENCRYPTION AND DECRYPTION WITH SPACES ############ ︡ef9b84a6-a390-4829-a7e7-70c41f2202bc︡ ︠0ffeb644-3b62-46b7-90aa-633056bbf3das︠ m = "HOLA A TODOS" m = [ord(x) for x in m]; m m = ZZ(list(reversed(m)), 100) ; m ︡ed4ce9a3-4c3c-4d77-94ea-16daac97ddba︡{"stdout":"[72, 79, 76, 65, 32, 65, 32, 84, 79, 68, 79, 83]\n"}︡{"stdout":"727976653265328479687983\n"}︡{"done":true} ︠2560481d-03de-457c-a65c-73b830053b45︠ ︡efa900b2-6c80-44fd-9d96-b47e06fa10b0︡ ︠a7204546-27b8-4f0e-a7d4-31315758b8a1s︠ m=727976653265328479687983 N=1427247692705959880439315947500961989719490561 e=98482223423820248338450737502133082744433889 d=629491662482361615643145214275604088170756509 c = power_mod(m, e, N); c ︡909c23ae-2d2e-461c-8275-8644ffd90a15︡{"stdout":"294563767342747878905683450207646328040096467\n"}︡{"done":true} ︠d656f8c3-75bb-41ce-b716-c75f63a8da87︠ ︡b891b04f-18ce-4d7f-8349-7ee1f270e561︡ ︠89af2bce-1ef3-4a6e-b322-d55d5e394c88s︠ m=727976653265328479687983 c=294563767342747878905683450207646328040096467 N=1427247692705959880439315947500961989719490561 d=629491662482361615643145214275604088170756509 power_mod(c, d, N) power_mod(c, d, N)==m ︡b9517063-de58-4ec9-9e1f-69c20589d386︡{"stdout":"727976653265328479687983\n"}︡{"stdout":"True\n"}︡{"done":true} ︠ce014525-5060-45e7-b9d2-60d6cadfb2d7︠ ︡a4a30caa-3969-4140-bf35-3186cbb28ae1︡ ︠c6229921-8882-4514-a0e6-bc20238a4710s︠ digits=[] while m>1: digits.insert(0, m % 100) m=m // 100; digits ︡2986c0b0-f891-4646-90dd-c65e31d73ebb︡{"stdout":"[72, 79, 76, 65, 32, 65, 32, 84, 79, 68, 79, 83]\n"}︡{"done":true} ︠517aec3a-37f0-4176-816f-dd3ca4010bed︠ ︡a7c66b4d-4600-4b66-9ea7-9e80fb9beac0︡ ︠9ed0c3ba-1809-4cc5-8125-620670f55f28s︠ a = ""; for i in digits: a=a+(chr(i)) a; ︡a4680c02-abeb-4808-958b-38b22efeaf2a︡{"stdout":"'HOLA A TODOS'\n"}︡{"done":true} ︠49a3c874-b85c-4444-a129-fcd7a7150a6f︠