{"id":1285,"date":"2023-07-01T15:35:04","date_gmt":"2023-07-01T13:35:04","guid":{"rendered":"https:\/\/www.jankafialka.sk\/?page_id=1285"},"modified":"2023-08-05T09:50:44","modified_gmt":"2023-08-05T07:50:44","slug":"rsa","status":"publish","type":"page","link":"https:\/\/www.jankafialka.sk\/?page_id=1285","title":{"rendered":"RSA"},"content":{"rendered":"\n<p>RSA \u0161ifra bola svojho \u010dasu prevratn\u00fd vyn\u00e1lez. Vytvorili ju autori Rivest, Shamir a Adleman, tak\u017ee n\u00e1zov je vytvoren\u00fd z ich mien. Pre\u010do je tak\u00e1 prelomov\u00e1, vysvetl\u00edm na pr\u00edklade.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"768\" src=\"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg\" alt=\"\" class=\"wp-image-1973\" srcset=\"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg 768w, https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396-300x300.jpg 300w, https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396-150x150.jpg 150w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p>Substitu\u010dn\u00e9 \u0161ifry s\u00fa fajn, ale be\u017ene sa ve\u013emi nepou\u017e\u00edvaj\u00fa. D\u00f4vod je, samozrejme, spojen\u00fd s ich bezpe\u010dnos\u0165ou. Jednorazov\u00e1 spr\u00e1va, ktor\u00fa si vymenia dve osoby, ktor\u00e9 sa vopred zo\u010di-vo\u010di dohodli na \u0161ifrovacom k\u013e\u00fa\u010di, je zabezpe\u010den\u00e1 naozaj dobre. V in\u00fdch situ\u00e1ci\u00e1ch u\u017e to tak nemus\u00ed by\u0165.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00edklad pou\u017eitia<\/h2>\n\n\n\n<p>Predstavme si hypotetick\u00fa situ\u00e1ciu. Starosta mesta po\u0161le svojho \u0161pi\u00f3na, aby sa infiltroval k nepriate\u013eovi. Bude od neho chcie\u0165 dost\u00e1va\u0165 ve\u013ea spr\u00e1v v priebehu mo\u017eno a\u017e nieko\u013ek\u00fdch rokov. V tomto \u010dase sa \u0161pi\u00f3n nem\u00f4\u017ee vraca\u0165 do svojho mesta, aby si preberal nov\u00e9 \u0161ifrovacie k\u013e\u00fa\u010de, pou\u017e\u00edva\u0165 dlhodobo ten ist\u00fd je nebezpe\u010dn\u00e9 a posiela\u0165 k\u013e\u00fa\u010de po tretej osobe tie\u017e nebude dobr\u00fd n\u00e1pad. <\/p>\n\n\n\n<p>Rie\u0161en\u00edm je asymetrick\u00e9 \u0161ifrovanie. Aby sme pochopili, \u010do je asymetrick\u00e9 \u0161ifrovanie, vysvetl\u00edm najprv opa\u010dn\u00fd pojem. Symetrick\u00e9 \u0161ifrovanie je tak\u00e9, pri ktorom vieme zo \u0161ifrovacieho k\u013e\u00fa\u010da \u013eahko odvodi\u0165 de\u0161ifrovac\u00ed. Pozrite si, napr\u00edklad, str\u00e1nku <a href=\"https:\/\/www.jankafialka.sk\/?page_id=777\" target=\"_blank\" rel=\"noreferrer noopener\">\u0160ifry<\/a> dole, kde vieme \u013eahko z k\u013e\u00fa\u010da pre Vigen\u00e8rovu \u0161ifru odvodi\u0165 opa\u010dn\u00fd k\u013e\u00fa\u010d. Tak\u017ee, ak niekto vie, ako bola spr\u00e1va za\u0161ifrovan\u00e1, dok\u00e1\u017ee ju aj \u013eahko de\u0161ifrova\u0165. Naopak asymetrick\u00e9 \u0161ifrovanie, ktor\u00e9ho najzn\u00e1mej\u0161\u00edm pr\u00edkladom je RSA \u0161ifra, m\u00e1 t\u00fa vlastnos\u0165, \u017ee aj ke\u010f ka\u017ed\u00fd dok\u00e1\u017ee spr\u00e1vu za\u0161ifrova\u0165, roz\u0161ifrova\u0165 ju dok\u00e1\u017ee len ten, kto \u0161ifru vytvoril. De\u0161ifrovac\u00ed k\u013e\u00fa\u010d sa ned\u00e1 odvodi\u0165 z k\u013e\u00fa\u010da \u0161ifrovacieho.<\/p>\n\n\n\n<p>Konkr\u00e9tne, pri RSA \u0161ifre m\u00e1me dva k\u013e\u00fa\u010de, ktor\u00e9 m\u00f4\u017ee pozna\u0165 hocikto &#8211; verejn\u00fd k\u013e\u00fa\u010d a spolo\u010dn\u00fd k\u013e\u00fa\u010d, ktor\u00fd v re\u00e1lnych situ\u00e1ci\u00e1ch b\u00fdva a\u017e nieko\u013eko sto-cifern\u00e9 \u010d\u00edslo. Tieto dva k\u013e\u00fa\u010de \u00faplne sta\u010dia k za\u0161ifrovaniu spr\u00e1vy. Tret\u00ed -de\u0161ifrovac\u00ed k\u013e\u00fa\u010d sa naz\u00fdva s\u00fakromn\u00fdm a tento pozn\u00e1 iba jedin\u00e1 osoba.<\/p>\n\n\n\n<p><strong>\u0160pi\u00f3n<\/strong>: <em>M\u00e1m novinky.<\/em><\/p>\n\n\n\n<p><strong>Starosta<\/strong>: <em>19, 10602637.<\/em><\/p>\n\n\n\n<p><strong>\u0160pi\u00f3n<\/strong>: <em>huhuk dudox ibiqp tvvcj srggx.<\/em><\/p>\n\n\n\n<p>Ako \u0161pi\u00f3n za\u0161ifroval svoju spr\u00e1vu? Pod\u013ea spolo\u010dn\u00e9ho k\u013e\u00fa\u010da zistil, \u017ee m\u00f4\u017ee za\u0161ifrova\u0165 \u0161tvor- a\u017e p\u00e4\u0165p\u00edsmenkov\u00e9 spr\u00e1vy. Tak\u017ee svoju spr\u00e1vu rozdelil na Garma,donu\u017e,nem\u00e1,gene,r\u00e1lov. Ka\u017ed\u00fd k\u00fasok spr\u00e1vy za\u0161ifroval napr\u00edklad pomocou aplik\u00e1cie ni\u017e\u0161ie na tejto str\u00e1nke.<\/p>\n\n\n\n<p>Starosta pou\u017eije svoj s\u00fakromn\u00fd k\u013e\u00fa\u010d 143557, ktor\u00fd nikdy nikomu neuk\u00e1zal a spr\u00e1vu roz\u0161ifruje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tvorba k\u013e\u00fa\u010dov pre RSA \u0161ifru<\/h2>\n\n\n\n<p>Z d\u00f4vodu bezpe\u010dnosti je ide\u00e1lne, ak vieme pred ka\u017edou poslanou spr\u00e1vou vytvori\u0165 nov\u00e9 k\u013e\u00fa\u010de tak, ako to urobil starosta v na\u0161om pr\u00edklade. Z\u00e1kladom s\u00fa ve\u013ek\u00e9 prvo\u010d\u00edsla. \u010c\u00edm v\u00e4\u010d\u0161ie, t\u00fdm lep\u0161ie. Na ich h\u013eadanie posl\u00fa\u017ei nasleduj\u00faca aplik\u00e1cia. Sta\u010d\u00ed zada\u0165 nep\u00e1rne \u010d\u00edslo men\u0161ie ako p\u00e4\u0165desiata tretia mocnina dvoch, \u010do je asi 9 bili\u00e1rd (15 n\u00fal za deviatkou). Toto obmedzenie je tu z technick\u00fdch d\u00f4vodov. Chceme toti\u017e z\u00edska\u0165 v\u00fdsledok v rozumnom \u010dase. Aplik\u00e1cia n\u00e1jde najbli\u017e\u0161ie prvo\u010d\u00edslo men\u0161ie od zadan\u00e9ho \u010d\u00edsla. Zauj\u00edmav\u00e9 \u010d\u00edtanie o prvo\u010d\u00edslach n\u00e1jdete <a href=\"https:\/\/www.jankafialka.sk\/?p=58\" target=\"_blank\" rel=\"noreferrer noopener\">tu<\/a>.<\/p>\n\n\n\n<input type=\"number\" id=\"n\" style=\"width: 10em;\">\n<button id=\"delitel\">N\u00e1jdi prvo\u010d\u00edslo!<\/button>\n<p id=\"delitelV\">Prvo\u010d\u00edsla: <\/p>\n<script>\n\/*pomocna funkcia - najde najmensieho neparneho delitela*\/\n\nfunction delitel(n){\nlet j= Math.floor(Math.sqrt(n));\nif (j%2===0){j=j-1;}\nlet d=1;\nfor(let i=3; i<=j; i+=2){\nif(n%i===0) {d=i; break;}}\nreturn d;}\nfunction delitel1(){\nconst n1= document.getElementById (\"n\");\nlet n= n1.value;\nif ((n>Math.pow(2,53)-1)||(n%2===0))\n{alert(\"\u010c\u00edslo mus\u00ed by\u0165 nep\u00e1rne a nie viac ako 16miestne!\");}\nelse{\nlet p=1;\nfor (let i=n; i>=1; i-=2){\nif(delitel(i)===1){p=i; break;}}\nconst delV= document.getElementById (\"delitelV\");\ndelV.textContent+= p+\", \";}\n}\nconst del= document.getElementById (\"delitel\");\ndel.addEventListener(\"click\",delitel1);\n<\/script>\n\n\n\n<script>\n\/\/funkcia rozsireny eulerov algoritmus ax=1 mod m\nfunction euler(a0,m0){\n\nconst a= BigInt(a0);\nconst m= BigInt(m0);\nlet pom1=1n;\nlet pom2= -m\/a;\nlet u=0n;\nlet podiel= -pom2;\nlet zvysok= m % a;\nlet delitel=a;\nfor(let i=0n; i<m; i++)\n{u=zvysok;\npodiel= delitel \/ zvysok;\nzvysok= delitel % zvysok;\ndelitel= u;\nu= pom2;\npom2= pom1- podiel*u;\npom1= u;\nif (zvysok==1n){return pom2;}\n}}\n\n\/\/funkcia vypocita sukromny kluc\nfunction sukrKluc(p0,q0,e0){\nconst p= BigInt(p0);\nconst q= BigInt(q0);\nconst e= BigInt(e0);\n\n\/\/ euklidov algoritmus pe je vysledok\nlet r=1n;\nlet pe=p-1n;\nlet qe=q-1n;\nwhile(r!== 0n){\nr= pe % qe; pe=qe; qe=r;\n}\nlet vysledok=0n;\nlet pom=0n;\nlet lambda= (p-1n)*(q-1n)\/pe;\n\nif(lambda % e === 0n || e>=lambda){alert(\"Sk\u00fas in\u00fd verejn\u00fd k\u013e\u00fa\u010d.\");}\nelse {\nif(euler(e, lambda)<0n){\n\nvysledok= euler(e,lambda)+lambda;} else{vysledok= euler(e,lambda);}\n}\nreturn vysledok;}\n<\/script>\n\n\n\n<p>Do okienok dole zadajte tri prvo\u010d\u00edsla. Z prv\u00fdch dvoch sa vytvor\u00ed spolo\u010dn\u00fd k\u013e\u00fa\u010d. Tieto maj\u00fa by\u0165 \u010do mo\u017eno najv\u00e4\u010d\u0161ie. Tretie prvo\u010d\u00edslo bude verejn\u00fdm k\u013e\u00fa\u010dom. Toto prvo\u010d\u00edslo nemus\u00ed a ani nem\u00e1 by\u0165 pr\u00edli\u0161 ve\u013ek\u00e9. Nez\u013eaknite sa, ak v\u00e1s program vyzve na zmenu tohto verejn\u00e9ho k\u013e\u00fa\u010da. D\u00f4vod n\u00e1jdete ni\u017e\u0161ie v pozn\u00e1mkach.<\/p>\n\n\n\n<div class=\"ram\">\n<p>Prvo\u010d\u00edslo 1: <input type=\"number\" id=\"p1\" style=\"width:9em;\"><\/p>\n<p>Prvo\u010d\u00edslo 2: <input type=\"number\" id=\"p2\" style=\"width:9em;\"><\/p>\n<p>Verejn\u00fd k\u013e\u00fa\u010d: <input type=\"number\" id=\"verejny\" style=\"width: 8em;\"><\/p>\n<button id=\"kluce\">K\u013e\u00fa\u010de<\/button>\n<p id=\"spolocny\">Spolo\u010dn\u00fd k\u013e\u00fa\u010d:<\/p>\n<p id=\"verejnyP\">Verejn\u00fd k\u013e\u00fa\u010d: <\/p>\n<p id=\"sukromnyP\">S\u00fakromn\u00fd k\u013e\u00fa\u010d: <\/p>\n<\/div>\n\n<script>\nfunction spolocny(){\nconst prv1= document.getElementById (\"p1\");\nconst p1= prv1.value;\nconst prv2= document.getElementById (\"p2\");\nconst p2= prv2.value; \nconst ver = document.getElementById(\"verejny\");\nconst verejny= ver.value;\n\nif(p1>=Math.pow(2,53) || p2>=Math.pow(2,53) || verejny>=Math.pow(2,53) || verejny%2===0|| delitel(verejny)!==1 || p1%2===0 || delitel(p1)!==1 || p2%2===0 || delitel(p2)!==1){alert(\"Prvo\u010d\u00edsla 1 a 2 a aj verejn\u00fd k\u013e\u00fa\u010d maj\u00fa by\u0165 prvo\u010d\u00edsla! Over si ich tu na str\u00e1nke vy\u0161\u0161ie.\");}\nelse \n{\nconst spol = document.getElementById (\"spolocny\");\nspol.textContent=\"Spolo\u010dn\u00fd k\u013e\u00fa\u010d: \"+BigInt(p1)*BigInt(p2);\nconst verejnyP= document.getElementById (\"verejnyP\");\nverejnyP.textContent=\"Verejn\u00fd k\u013e\u00fa\u010d: \"+verejny;\nconst sukromnyP= document.getElementById(\"sukromnyP\");\nsukromnyP.textContent=\"S\u00fakromn\u00fd k\u013e\u00fa\u010d: \"+sukrKluc(p1,p2,verejny);\n}}\nconst kluce = document.getElementById (\"kluce\");\nkluce.addEventListener(\"click\", spolocny);\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">RSA \u0161ifrovanie<\/h2>\n\n\n\n<p>Z predch\u00e1dzaj\u00facej aplik\u00e1cie si treba ulo\u017ei\u0165 tri k\u013e\u00fa\u010de - dva sa zverejnia, tret\u00ed zostane utajen\u00fd. Prvo\u010d\u00edsla, z ktor\u00fdch vznikol spolo\u010dn\u00fd k\u013e\u00fa\u010d, pre istotu \u00faplne zabudneme. Nasleduj\u00faca aplik\u00e1cia u\u017e priamo \u0161ifruje spr\u00e1vu vo forme \u010d\u00edsla alebo vo forme re\u0165azca z p\u00edsmen, ktor\u00e9 program prevedie na \u010d\u00edslo. V oboch pr\u00edpadoch m\u00f4\u017eeme \u0161ifrova\u0165 iba spr\u00e1vy men\u0161ie ako spolo\u010dn\u00fd k\u013e\u00fa\u010d.<\/p>\n\n\n\n<script>\nfunction pismenoNaCislo(pismeno){\nswitch(pismeno){\ncase \"A\": case \"a\": case \"\u00c1\": case \"\u00e1\": case \"\u00e4\": case \"\u00c4\": return 0;\ncase \"b\": case \"B\": return 1;\ncase \"c\": case \"C\": case \"\u010d\": case \"\u010c\": return 2;\ncase \"d\": case \"D\": case \"\u010f\": case \"\u010e\": return 3;\ncase \"e\": case \"E\": case \"\u00e9\": case \"\u00c9\": return 4;\ncase \"f\": case \"F\": return 5;\ncase \"g\": case \"G\": return 6;\ncase \"h\": case \"H\": return 7;\ncase \"i\": case \"I\": case \"\u00ed\": case \"\u00cd\": return 8;\ncase \"j\": case \"J\": return 9;\ncase \"k\": case \"K\": return 10;\ncase \"l\": case \"L\": case \"\u013a\": case \"\u0139\": case \"\u013e\": case \"\u013d\": return 11;\ncase \"m\": case \"M\": return 12;\ncase \"n\": case \"N\": case \"\u0148\": case \"\u0147\": return 13;\ncase \"o\": case \"O\": case \"\u00f3\": case \"\u00d3\": case \"\u00f4\": case \"\u00d4\": return 14;\ncase \"p\": case \"P\": return 15;\ncase \"q\": case \"Q\": return 16;\ncase \"r\": case \"R\": case \"\u0155\": case \"\u0154\": case \"\u0159\": case \"\u0158\": return 17;\ncase \"s\": case \"S\": case \"\u0161\": case \"\u0160\": return 18;\ncase \"t\": case \"T\": case \"\u0165\": case \"\u0164\": return 19;\ncase \"u\": case \"U\": case \"\u00fa\": case \"\u00da\": return 20;\ncase \"v\": case \"V\": return 21;\ncase \"w\": case \"W\": return 22;\ncase \"x\": case \"X\": return 23;\ncase \"y\": case \"Y\": case \"\u00fd\": case \"\u00dd\": return 24;\ncase \"z\": case \"Z\": case \"\u017e\": case \"\u017d\": return 25;\ndefault : return NaN;\n}}\nfunction cisloNaPismeno(cislo){switch(cislo){\ncase 0: return \"A\";\ncase 1: return \"B\";\ncase 2: return \"C\";\ncase 3: return \"D\";\ncase 4: return \"E\";\ncase 5: return \"F\";\ncase 6: return \"G\";\ncase 7: return \"H\";\ncase 8: return \"I\";\ncase 9: return \"J\";\ncase 10: return \"K\";\ncase 11: return \"L\";\ncase 12: return \"M\";\ncase 13: return \"N\";\ncase 14: return \"O\";\ncase 15: return \"P\";\ncase 16: return \"Q\";\ncase 17: return \"R\";\ncase 18: return \"S\";\ncase 19: return \"T\";\ncase 20: return \"U\";\ncase 21: return \"V\";\ncase 22: return \"W\";\ncase 23: return \"X\";\ncase 24: return \"Y\";\ncase 25: return \"Z\";\ndefault: return \"chyba\";\n}}\n<\/script>\n\n\n\n<div class=\"ram\">\nVstup:<br>\n<textarea id=\"text\" rows=\"5\" style=\"width: 100%;\"><\/textarea><br>\nK\u013e\u00fa\u010d (verejn\u00fd alebo s\u00fakromn\u00fd): \n<input type=\"number\" id=\"kluc\"><br>\nSpolo\u010dn\u00fd k\u013e\u00fa\u010d: \n<input type=\"number\" id=\"spolocnyK\">\n<button id=\"sifruj\">\u0160ifruj<\/button>\n<br> V\u00fdstup:<br>\n<textarea id=\"vystup\" rows=\"5\" style=\"width:100%;\"><\/textarea>\n<\/div>\n<p>Pri tomto spolo\u010dnom k\u013e\u00fa\u010di mo\u017eno posiela\u0165 \u013eubovo\u013en\u00e9 <label id=\"label\"> <\/label>-p\u00edsmenkov\u00e9 spr\u00e1vy. Ak je prv\u00e9 p\u00edsmenko zo za\u010diatku abecedy, mo\u017eno aj o jedno p\u00edsmenko dlh\u0161ie.<\/p>\n\n<script>\n\/\/sifrujem vyuziva umocnovanie podla mocniny v dvojkovej sustave\nfunction sifrujem(text, kluc, spolocny)\n{\nlet pole=[];\nwhile (kluc>0n){pole.push(kluc & 1n); \nkluc>>=1n;}\nlet pom= text;\nlet sucin= 1n;\nfor(let i=0; i<pole.length; i++)\n{\npole[i]=pole[i]*pom;\npom=(pom*pom) % spolocny;\nif(pole[i]!==0n){sucin=(sucin*pole[i]) % spolocny;}\n}\nreturn sucin;\n}\n\nfunction sifrujF(){\nconst text1= document.getElementById (\"text\");\nconst text= text1.value;\nconst kluc1= document.getElementById (\"kluc\");\nconst kluc2= kluc1.value;\nconst kluc= BigInt(kluc2);\nconst spolocnyK1= document.getElementById (\"spolocnyK\");\nconst spolocnyK2= spolocnyK1.value;\nconst spolocnyK= BigInt(spolocnyK2);\n\n\/\/ak vstup je \u010d\u00edslo\nif(!(isNaN(text) ||(BigInt(text) >= spolocnyK))){\nconst vystup = document.getElementById (\"vystup\");\nconst text2= BigInt(text);\nvystup.value= sifrujem(text2,kluc,spolocnyK);}\n\n\/\/ak vstup je slovo, najprv urcim, ci nie je pridlhe\nelse {\nlet slovo= text.trim();\nlet pismena= slovo.split('');\nfor(let i=0; i<pismena.length; i++)\n{pismena[i]=pismenoNaCislo(pismena[i]);}\n\/\/prevod do 26tkovej sustavy\nlet cislo=0n; let mocnina=1n;\nfor(let i=pismena.length-1; i>=0;i--){\nif (isNaN(pismena[i])){alert(\"M\u00f4\u017ee\u0161 pou\u017ei\u0165 iba p\u00edsmen\u00e1. \u017diadne in\u00e9 znaky!\"); break;}\nelse {cislo+= BigInt(pismena[i])*mocnina;\nmocnina= mocnina*26n;}}\nif(cislo<spolocnyK){\nlet cisloV= sifrujem(cislo,kluc,spolocnyK);\n\n\/\/z cisla cisloV vybrat cifry v 26tkovej sustave\nlet pocetPismen1 = 0n;\nlet temp = cisloV;\nwhile (temp > 0n) {\n  pocetPismen1= pocetPismen1+1n;\n  temp = temp \/ 26n;\n}\nlet pocetPismen= Number(pocetPismen1);\n\nlet pismenaV= [];\npismenaV.length= pocetPismen;\nlet delenec= cisloV;\nfor(let i=0; i<pocetPismen;i++){\npismenaV[pocetPismen-1-i]= Number(delenec % 26n);\ndelenec = delenec\/26n;\npismenaV[pocetPismen-1-i]= cisloNaPismeno(pismenaV[pocetPismen-1-i]);\n}\n\/\/max pocet pismen\nlet label= 0n;\nlet temp2 = spolocnyK;\nwhile (temp2 > 0n) {\n  label= label+1n;\n  temp2 = temp2 \/ 26n;\n}\nconst label1= document.getElementById (\"label\");\nlabel1.textContent= Number(label)-1;\nconst vystup = document.getElementById (\"vystup\");\nvystup.value= pismenaV.join('');\n}\nelse {\nalert(\"Neplatn\u00fd vstup. Ak zad\u00e1va\u0161 \u010d\u00edslo, mus\u00ed by\u0165 men\u0161ie ako spolo\u010dn\u00fd k\u013e\u00fa\u010d, teda \"+spolocnyK+\". Ak zad\u00e1va\u0161 slovo, mus\u00ed by\u0165 po prevode na \u010d\u00edslo tie\u017e men\u0161ie ako \"+spolocnyK+\". Tvoje slovo je rovn\u00e9 \"+cislo+\". Sk\u00fas n\u00e1js\u0165 v\u00e4\u010d\u0161ie k\u013e\u00fa\u010de.\");}\n}}\nconst sifruj = document.getElementById (\"sifruj\");\nsifruj.addEventListener(\"click\", sifrujF);\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Pozn\u00e1mky<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bezpe\u010dnos\u0165 RSA \u0161ifry je zalo\u017een\u00e1 na nemo\u017enosti n\u00e1js\u0165 v dostupnom \u010dase prvo\u010d\u00edsla, z ktor\u00fdch vznikol spolo\u010dn\u00fd k\u013e\u00fa\u010d. V\u00fdpo\u010dtovo je to podobn\u00e9 ako N\u00e1jdi prvo\u010d\u00edslo. U\u017e 15-miestne zadania chv\u00ed\u013eu trvaj\u00fa. Ak vyn\u00e1sob\u00edme dve tak\u00e9to \u010d\u00edsla, dostaneme a\u017e 30-miestne \u010d\u00edslo. N\u00e1js\u0165 jeho delitele netrv\u00e1 dvakr\u00e1t to\u013eko, ale pribli\u017ene 1 000 000 000 000 000-kr\u00e1t to\u013eko. \u010ci\u017ee, ak n\u00e1js\u0165 delite\u013ea 15-miestneho \u010d\u00edsla trv\u00e1 1 sekundu, n\u00e1js\u0165 delite\u013ea 30-miestneho \u010d\u00edsla by trvalo asi 31 mili\u00e1rd rokov. \ud83d\ude31V\u00e1\u017ene, prepo\u010d\u00edtajte si to sami, ak never\u00edte. Oby\u010dajn\u00fd smartf\u00f3n, na ktorom tieto v\u00fdpo\u010dty pravdepodobne vykon\u00e1vate, ale nie je vrchol s\u00fa\u010dasnej technol\u00f3gie, tak\u017ee 30-miestny spolo\u010dn\u00fd k\u013e\u00fa\u010d v s\u00fa\u010dasnosti nemo\u017eno pova\u017eova\u0165 za bezpe\u010dn\u00fd.<\/li>\n\n\n\n<li>N\u00e1jdi prvo\u010d\u00edsla funguje tak, \u017ee testuje delite\u013enos\u0165 dan\u00e9ho \u010d\u00edsla v\u0161etk\u00fdmi nep\u00e1rnymi \u010d\u00edslami od 3 a\u017e do odmocniny z tohto \u010d\u00edsla. Ak \u017eiadneho delite\u013ea nen\u00e1jde, v\u00fdsledkom je dan\u00e9 \u010d\u00edslo. Ak n\u00e1jde delite\u013ea, zmen\u00ed zadan\u00e9 \u010d\u00edslo na \u010d\u00edslo o dve men\u0161ie (aby bolo st\u00e1le nep\u00e1rne). Toto rob\u00ed, a\u017e k\u00fdm nen\u00e1jde prvo\u010d\u00edslo.<\/li>\n\n\n\n<li>H\u013eadanie k\u013e\u00fa\u010dov je matematicky tro\u0161ku komplikovanej\u0161ie, ale zato technicky r\u00fdchlej\u0161ie. Preto tu pracujem aj s v\u00e4\u010d\u0161\u00edmi \u010d\u00edslami. Vy zad\u00e1te tri prvo\u010d\u00edsla ide\u00e1lne z\u00edskan\u00e9 v predch\u00e1dzaj\u00facom kroku. Program prv\u00e9 dve vyn\u00e1sob\u00ed (tu m\u00f4\u017ee vznikn\u00fa\u0165 viac ako 16miestne \u010d\u00edslo) - to bude spolo\u010dn\u00fd k\u013e\u00fa\u010d, tretie prvo\u010d\u00edslo bude verejn\u00fd k\u013e\u00fa\u010d. V\u00fdpo\u010det s\u00fakromn\u00e9ho \u010d\u00edsla vo ve\u013emi zjednodu\u0161enej podobe prebieha asi takto: najprv vypo\u010d\u00edtame najmen\u0161\u00ed spolo\u010dn\u00fd n\u00e1sobok \u010d\u00edsel <em>p<\/em>-1 a <em>q<\/em>-1, kde <em>p<\/em> a <em>q<\/em> s\u00fa prvo\u010d\u00edsla, z ktor\u00fdch vznikol spolo\u010dn\u00fd k\u013e\u00fa\u010d. Ak prvo\u010d\u00edsla boli 7 a 13, nsn(6,12) = 12. Verejn\u00fd k\u013e\u00fa\u010d mus\u00ed by\u0165 s t\u00fdmto n\u00e1sobkom nes\u00fadelite\u013en\u00fd, preto v\u00e1s niekedy program vyzve na v\u00fdber in\u00e9ho verejn\u00e9ho k\u013e\u00fa\u010da. Navy\u0161e by nemal by\u0165 v\u00e4\u010d\u0161i ako tento nsn. V na\u0161om minipr\u00edklade m\u00f4\u017eeme ako verejn\u00fd k\u013e\u00fa\u010d pou\u017ei\u0165 iba 5, 7 alebo 11. Potom ur\u010d\u00edme <em>x<\/em> ako to \u010d\u00edslo, ktor\u00e9 po vyn\u00e1soben\u00ed verejn\u00fdm k\u013e\u00fa\u010dom d\u00e1 zvy\u0161ok 1 po delen\u00ed spom\u00ednan\u00fdm najmen\u0161\u00edm spolo\u010dn\u00fdm n\u00e1sobkom. Ak nsn bolo 12 a verejn\u00fd k\u013e\u00fa\u010d 5, s\u00fakromn\u00fd bude tie\u017e 5, preto\u017ee 5 \u2219 5 = 25 a to d\u00e1va zvy\u0161ok 1 po delen\u00ed dvan\u00e1stimi. Z tohto kr\u00e1tkeho vh\u013eadu vypl\u00fdvaj\u00fa dve d\u00f4le\u017eit\u00e9 veci. Po prv\u00e9, s\u00fakromn\u00fd k\u013e\u00fa\u010d sa ned\u00e1 vypo\u010d\u00edta\u0165, ak nevieme, z ktor\u00fdch prvo\u010d\u00edsel vznikol spolo\u010dn\u00fd k\u013e\u00fa\u010d. Po druh\u00e9 s\u00fakromn\u00fd a verejn\u00fd k\u013e\u00fa\u010d s\u00fa navz\u00e1jom zamenite\u013en\u00e9, tak\u017ee je na n\u00e1s, ktor\u00fd zverejn\u00edme a ktor\u00fd zostane utajen\u00fd. (Ak za\u0161ifrujeme spr\u00e1vu s\u00fakromn\u00fdm k\u013e\u00fa\u010dom, verejn\u00fdm ju m\u00f4\u017eeme od\u0161ifrova\u0165.)<\/li>\n\n\n\n<li>Pri samotnom \u0161ifrovan\u00ed pou\u017e\u00edvam nieko\u013eko matematick\u00fdch trikov, tak\u017ee v\u00fdpo\u010dty s\u00fa naozaj r\u00fdchle. Program rozozn\u00e1va, \u010di je vstup \u010d\u00edslo alebo nie. \u010c\u00edslo \u0161ifruje tak, \u017ee ho umocn\u00ed na verejn\u00fd k\u013e\u00fa\u010d a n\u00e1jde zvy\u0161ok v\u00fdsledku po delen\u00ed spolo\u010dn\u00fdm k\u013e\u00fa\u010dom. Pri samotnom umoc\u0148ovan\u00ed pou\u017e\u00edvam podobn\u00fd princ\u00edp ako v tomto <a href=\"https:\/\/www.jankafialka.sk\/?p=72\" target=\"_blank\" rel=\"noreferrer noopener\">pr\u00edspevku<\/a> na blogu. De\u0161ifrovanie prebieha presne tak isto ako \u0161ifrovanie, iba\u017ee vy namiesto verejn\u00e9ho k\u013e\u00fa\u010da vlo\u017e\u00edte s\u00fakromn\u00fd.<\/li>\n\n\n\n<li>\u0160ifrovanie slova prebieha tak, \u017ee slovo je zak\u00f3dovan\u00e9 do jedn\u00e9ho \u010d\u00edsla v 26tkovej \u010d\u00edselnej s\u00fastave s ciframi A=0, B=1, ... Z=25. Je to v\u00fdhodnej\u0161ie ako \u0161ifrova\u0165 ka\u017ed\u00e9 p\u00edsmeno zvl\u00e1\u0161\u0165, preto\u017ee d\u013a\u017eka jednotlivo \u0161ifrovanej spr\u00e1vy m\u00f4\u017ee by\u0165 r\u00f4zne ve\u013ek\u00e1. Vypl\u00fdva z toho ale jeden d\u00f4sledok, na ktor\u00fd treba myslie\u0165. Nesmieme posiela\u0165 slovo za\u010d\u00ednaj\u00face p\u00edsmenom A, preto\u017ee to sa zak\u00f3duje ako \u010d\u00edslo typu 0105 = 105, tak\u017ee to A na za\u010diatku sa strat\u00ed. Preto \u0161pi\u00f3n v \u00favodnom pr\u00edklade nerozdelil slovo generalov na gener,alov, ale na gene,ralov.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>RSA \u0161ifra bola svojho \u010dasu prevratn\u00fd vyn\u00e1lez. Vytvorili ju autori Rivest, Shamir a Adleman, tak\u017ee n\u00e1zov je vytvoren\u00fd z ich mien. Pre\u010do je tak\u00e1 prelomov\u00e1, vysvetl\u00edm na pr\u00edklade. Substitu\u010dn\u00e9 \u0161ifry s\u00fa fajn, ale be\u017ene sa ve\u013emi nepou\u017e\u00edvaj\u00fa. D\u00f4vod je, samozrejme, spojen\u00fd s ich bezpe\u010dnos\u0165ou. Jednorazov\u00e1 spr\u00e1va, ktor\u00fa si vymenia dve osoby, ktor\u00e9 sa vopred zo\u010di-vo\u010di [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":777,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1285","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RSA - jankafialka<\/title>\n<meta name=\"description\" content=\"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jankafialka.sk\/?page_id=1285\" \/>\n<meta property=\"og:locale\" content=\"sk_SK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RSA - jankafialka\" \/>\n<meta property=\"og:description\" content=\"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jankafialka.sk\/?page_id=1285\" \/>\n<meta property=\"og:site_name\" content=\"jankafialka\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-05T07:50:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Predpokladan\u00fd \u010das \u010d\u00edtania\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 min\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285\",\"url\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285\",\"name\":\"RSA - jankafialka\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.jankafialka.sk\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/12014396.jpg\",\"datePublished\":\"2023-07-01T13:35:04+00:00\",\"dateModified\":\"2023-08-05T07:50:44+00:00\",\"description\":\"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285#breadcrumb\"},\"inLanguage\":\"sk-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sk-SK\",\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285#primaryimage\",\"url\":\"https:\\\/\\\/www.jankafialka.sk\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/12014396.jpg\",\"contentUrl\":\"https:\\\/\\\/www.jankafialka.sk\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/12014396.jpg\",\"width\":768,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=1285#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jankafialka.sk\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0160ifry\",\"item\":\"https:\\\/\\\/www.jankafialka.sk\\\/?page_id=777\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RSA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jankafialka.sk\\\/#website\",\"url\":\"https:\\\/\\\/www.jankafialka.sk\\\/\",\"name\":\"jankafialka\",\"description\":\"O matematike\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.jankafialka.sk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sk-SK\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RSA - jankafialka","description":"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jankafialka.sk\/?page_id=1285","og_locale":"sk_SK","og_type":"article","og_title":"RSA - jankafialka","og_description":"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.","og_url":"https:\/\/www.jankafialka.sk\/?page_id=1285","og_site_name":"jankafialka","article_modified_time":"2023-08-05T07:50:44+00:00","og_image":[{"url":"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Predpokladan\u00fd \u010das \u010d\u00edtania":"7 min\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jankafialka.sk\/?page_id=1285","url":"https:\/\/www.jankafialka.sk\/?page_id=1285","name":"RSA - jankafialka","isPartOf":{"@id":"https:\/\/www.jankafialka.sk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jankafialka.sk\/?page_id=1285#primaryimage"},"image":{"@id":"https:\/\/www.jankafialka.sk\/?page_id=1285#primaryimage"},"thumbnailUrl":"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg","datePublished":"2023-07-01T13:35:04+00:00","dateModified":"2023-08-05T07:50:44+00:00","description":"Na str\u00e1nke RSA si viete n\u00e1js\u0165 \u013eubovo\u013en\u00e9 prvo\u010d\u00edsla, vytvori\u0165 z nich k\u013e\u00fa\u010de pre RSA \u0161ifrovanie a aj priamo \u0161ifrova\u0165 \u010di de\u0161ifrova\u0165 spr\u00e1vy.","breadcrumb":{"@id":"https:\/\/www.jankafialka.sk\/?page_id=1285#breadcrumb"},"inLanguage":"sk-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jankafialka.sk\/?page_id=1285"]}]},{"@type":"ImageObject","inLanguage":"sk-SK","@id":"https:\/\/www.jankafialka.sk\/?page_id=1285#primaryimage","url":"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg","contentUrl":"https:\/\/www.jankafialka.sk\/wp-content\/uploads\/2023\/08\/12014396.jpg","width":768,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/www.jankafialka.sk\/?page_id=1285#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jankafialka.sk\/"},{"@type":"ListItem","position":2,"name":"\u0160ifry","item":"https:\/\/www.jankafialka.sk\/?page_id=777"},{"@type":"ListItem","position":3,"name":"RSA"}]},{"@type":"WebSite","@id":"https:\/\/www.jankafialka.sk\/#website","url":"https:\/\/www.jankafialka.sk\/","name":"jankafialka","description":"O matematike","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jankafialka.sk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sk-SK"}]}},"_links":{"self":[{"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/pages\/1285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1285"}],"version-history":[{"count":6,"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/pages\/1285\/revisions"}],"predecessor-version":[{"id":1974,"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/pages\/1285\/revisions\/1974"}],"up":[{"embeddable":true,"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=\/wp\/v2\/pages\/777"}],"wp:attachment":[{"href":"https:\/\/www.jankafialka.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}