{"id":1005,"date":"2021-03-27T17:07:11","date_gmt":"2021-03-27T17:07:11","guid":{"rendered":"https:\/\/iludis.de\/?p=1005"},"modified":"2022-04-20T10:08:26","modified_gmt":"2022-04-20T10:08:26","slug":"rsa-algorithmus-fuer-den-unterricht","status":"publish","type":"page","link":"https:\/\/iludis.de\/?page_id=1005","title":{"rendered":"RSA-Algorithmus f\u00fcr den Unterricht"},"content":{"rendered":"<p>Vollst\u00e4ndiger Python-Quellcode<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">import math\r\nimport random\r\n\r\n# primzahlen erzeugen\r\nobergrenze = 100\r\nprimliste = [2] #Initialisierung Primzahlarray\r\nfor i in range(3,obergrenze,2):\r\n    teilbar = False\r\n    for j in range(2, math.ceil(math.sqrt(i))+1):\r\n        if(i\/j == i\/\/j):\r\n            teilbar = True\r\n            break\r\n    if(not teilbar):\r\n        primliste.append(i)\r\nprint(&quot;Primzahlen zwischen 0 und&quot;,obergrenze,&quot;: &quot;,primliste)\r\n\r\n# \u00d6ffentlichen Modulus und Eulersche Phi-Funktion davon\r\np = primliste[random.randint(0, len(primliste)-1)] #zuf\u00e4llige Auswahl\r\nprimliste.remove(p) #Sicherstellen, dass p und q unterschiedlich\r\nq = primliste[random.randint(0, len(primliste)-1)] #zuf\u00e4llige Auswahl\r\nprint(&quot;zuf\u00e4llig ausgew\u00e4hltes p: &quot;, p, &quot;und q: &quot;, q)\r\nphiVonN = (p-1)*(q-1)\r\nprint(&quot;Phi(N): (&quot;,p,&quot;- 1 ) * (&quot;,q,&quot;- 1 ) = &quot;, phiVonN, &quot;\\n&quot;)\r\nN = p*q #\u00f6ffentlicher Modulus\r\nprint (&quot;** \u00f6ffentlicher Modulus:&quot; ,N)\r\n\r\n# mit gr\u00f6\u00dftem gemeinsamen Teiler den \u00f6ffentlichen Schl\u00fcssel bestimmen\r\ndef ggt(a,b): #Euklidischer Algorithmus\r\n    if b==0:\r\n        return a\r\n    return ggt(b,a%b)\r\n\r\ne = 2 #Initialisierung mit Startwert\r\nwhile ggt(e,phiVonN)!=1: #BrutForce Gleichung l\u00f6sen\r\n    e = e + 1\r\nprint(&quot;** \u00f6ffentlicher schl\u00fcssel: &quot;, e)\r\n\r\n# privaten Schl\u00fcssel bestimmen\r\nd = 2 #Initialisierung mit Startwert\r\nwhile (d*e)%phiVonN!=1: #Nochmal BruteForce\r\n    d = d + 1\r\nprint(&quot;** privater schl\u00fcssel: &quot;, d)\r\n\r\nklarzahl = 42 #irgendeine Zahl...\r\nif klarzahl&lt;(N-1):\r\n    geheimzahl = pow(klarzahl,e,N)\r\n    neueklarzahl = pow(geheimzahl,d,N)\r\n    print(&quot;\\nklarzahl:&quot;, klarzahl,\r\n          &quot;\\ngeheimzahl:&quot;, geheimzahl,\r\n          &quot;\\nentschl\u00fcsselt: &quot;, neueklarzahl)\r\nelse:\r\n    print(&quot;\u00f6ffentlicher Modulus &quot;, N, &quot;ist kleiner als &quot;, klarzahl, &quot;+1&quot;)<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vollst\u00e4ndiger Python-Quellcode import math import random # primzahlen erzeugen obergrenze = 100 primliste = [2] #Initialisierung Primzahlarray for i in range(3,obergrenze,2): teilbar = False for j in range(2, math.ceil(math.sqrt(i))+1): if(i\/j == i\/\/j): teilbar = True break if(not teilbar): primliste.append(i) print(&quot;Primzahlen zwischen 0 und&quot;,obergrenze,&quot;: &quot;,primliste) # \u00d6ffentlichen Modulus und Eulersche Phi-Funktion davon p = primliste[random.randint(0, len(primliste)-1)]&hellip; <\/p>\n<p class=\"toivo-read-more\"><a href=\"https:\/\/iludis.de\/?page_id=1005\" class=\"more-link\">Read more <span class=\"screen-reader-text\">RSA-Algorithmus f\u00fcr den Unterricht<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":354,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":{"0":"post-1005","1":"page","2":"type-page","3":"status-publish","5":"entry"},"_links":{"self":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages\/1005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1005"}],"version-history":[{"count":0,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages\/1005\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages\/354"}],"wp:attachment":[{"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}