Fermatscher Primzahltest (einfach erklärt)

  Рет қаралды 7,757

Florian Dalwigk

Florian Dalwigk

Күн бұрын

Пікірлер: 45
@Edsalahr
@Edsalahr Жыл бұрын
Bitte mehr solcher Videos :) Kannst du auch Videos über Endliche Körper und Elliptische Kurven machen?
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Leider werden diese Videos im Vergleich zu anderen Videos nur sehr selten angeschaut :( Elliptische Kurven stehen aber noch auf dem Plan :)
@dennismuller1141
@dennismuller1141 Жыл бұрын
kleine Anmerkung: wenn bei `a = random.randrange(2, p)` die Zahl p-1 gewählt wird und p ungerade ist, gibt die Funktion garantiert True zurück (p-1 ist ja kongruent zu -1 modulo p). Außerdem ist es natürlich ineffizient, erst die Potenz `a ** (p - 1)` zu berechnen und dann erst modulo p zu reduzieren. 1024-bit große Zahlen lassen sich damit jedenfalls nicht testen. Eine leicht optimierte Variante der Funktion könnte so aussehen: def fermat(p, k): for runs in range(k): a = random.randrange(2, p-1) if pow(a, p-1, p) != 1: return False return True die builtin pow Funktion berechnet `base ** exp % mod` deutlich effizienter, da durch häufigere modulo-Reduktionen die Zwischenergebnisse klein gehalten werden. Eine Implementierung könnte folgendermaßen aussehen: def mod_pow(base, exp, mod): r = 1 while exp: if exp % 2 == 1: r = r * base % p base = base * base % p exp //= 2 return r Allerdings muss ich hier auch anmerken, dass diese Implementierung nicht für RSA-Berechnungen mit dem geheimen Schlüssel geeignet ist, da der if-Block im while-loop die Funktion anfällig für Seitenkanalangriffe macht.
@Radulf666
@Radulf666 Жыл бұрын
Vielen Dank für das tolle und gut verständliche Video!
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Sehr gerne 😊
@javaABCde
@javaABCde Жыл бұрын
Sehr nice Erklärung!
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Danke fürs Feedback!
@DerMichael
@DerMichael Жыл бұрын
Hilft sehr für das Verständnis von Cryptography Challenges in CTFs von Hack the Box :)
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Das ist super :) Ja, gerade bei Crypto Challenges sollte man sich nicht vor Mathe fürchten
@MadpolygonDEV
@MadpolygonDEV Жыл бұрын
interessant, kannte den algorithmus nicht allerdings denke ich kann ich den gut für eigene projekte verwenden! danke
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Auf jeden Fall!
@peterzwegat2744
@peterzwegat2744 Жыл бұрын
Mich würde interessieren wie Florian seine Videos macht. In einem Q&A wurde ja mal angekündigt, dass dazu ein Video kommt. Jemand nen Link?
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Das bleibt erstmal ein Betriebsgeheimnis 🤫
@Wolfgang.-
@Wolfgang.- Жыл бұрын
Wäre es nicht nützlich sicherzustellen, dass bei "a = random. randrange (2, p)" a sich nicht wiederholt?
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Kann man machen, kommt aber selten vor und kann deshalb vernachlässigt werden
@rzstnce5627
@rzstnce5627 Жыл бұрын
hallo ich würde mir wohl gerne ein video wünschen über cloudflare warp wie es genau funktioniert und was es macht ist bestimmt interessant
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Ist aktuell nicht geplant
@danielf.7151
@danielf.7151 Жыл бұрын
Gibt es eine Möglichkeit, die Chance der Richtigkeit abzuschätzen?
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Das ist die Challenge am Schluss
@hm.8211
@hm.8211 Жыл бұрын
wird ja ne ganze " RSA verstehen " videoreihe xD
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Kryptographie verstehen ;)
@hm.8211
@hm.8211 Жыл бұрын
@@Florian.Dalwigk kann nur sagen dass diese art von videos die sind, bei denen du von mir garantiert 100% watchtime bekommst... aber klar, die zielgruppe für sowas ist ziemlich klein
@katyes1228
@katyes1228 Жыл бұрын
@@Florian.Dalwigk ich schau mir solche Videos an :D Die meisten aus Interesse, aber zugegebenermaßen manche auch zur Prüfungsvorbereitung XD
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Das freut mich sehr, danke dir :)
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Genau dafür mache ich sie ja eigentlich ;)
@Simon35098
@Simon35098 Жыл бұрын
1:41 Eine Primzahl ist eine natürliche Zahl, die genau zwei Teiler hat und nicht eine Zahl die nur durch 1 und sich sich selber teilbar ist. *Klugscheißermodus aus* :) Dann muss man auch die Zahl 2 nicht abfangen.
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
;)
@Simon-hy2fh
@Simon-hy2fh Жыл бұрын
4:41 du sagst zwar kongruent, schreibst aber = Fehlt hier nicht das Kongurenzzeichen? Die Schreibweise mit = finde ich uneindeutig, man kann es auch falsch interpretieren.
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Man kann beides nutzen
@schwingedeshaehers
@schwingedeshaehers Жыл бұрын
Bei einer Million sollte es doch noch gehen, alle interessanten zu prüfen (Wurzel ist 1000, für 100 000 000, 10 000, und das sollte man durchgehen können, vorallem weil man nur ungerade zahlen prüfen muss, was es nochmal halbiert)
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Ich meinte hier ja im Kopf ;)
@schwingedeshaehers
@schwingedeshaehers Жыл бұрын
@@Florian.Dalwigk achso, okay
@amiganer681130
@amiganer681130 Жыл бұрын
Wenn "p" aber groß wird, wird auch dieses Verfahren an seine Grenzen kommen, was mache ich dann? Wir suchen ja Primzahlen, die bis zu 2048 Bit (= 256 Byte) groß sind. In Rust gibt es einen Datentyp "u128"....
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Wieso? Modulo-Rechnung ist sehr günstig von der Laufzeit
@Radulf666
@Radulf666 Жыл бұрын
@@Florian.Dalwigk Ich vermute, er meint, um auch bei großen Zahlen eine hohe Genauigkeit zu bekommen, muss mann dann auch mehr Durchgänge machen.
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Gar nicht Mal unbedingt, wenn es nicht gleich eine Carmichael Zahl ist.
@MarsCorporations
@MarsCorporations Жыл бұрын
Der Algorithmus arbeitet nur mit integern, und für diese gibt es libs (je nach Programmiersprache heißen die unterschiedlich, z.B. BigInt, oder BigInteger, oder BigNum, etc.). Die Komplexität der Standardoperationen auf Integern ist relativ gut, sodass man damit auch hundert- oder tausendstellige Zahlen halbwegs flott abarbeiten kann. Potenzieren klingt hier jetzt erstmal wie ein Problem, ist es aber nicht. Angenommen du potenzierst 256 Byte mit 256 Byte, dann kann das Resultat maximal 256*256 = 65536 Stellen lang sein (bei heutigen Computern ist 65k RAM kein Problem, wie die Rechenzeit aussieht weiß ich nicht, wenn die Operation in der lib ist wird sie vermutlich optimiert sein und funktionieren). Natürlich wird es unangenehm, wenn du "Megabytegroße" Zahlen potenzieren willst, aber alles darunter sollte gehen. Für "Potenzieren mit Modulo" gibt es noch ein paar Tricks, aber da kenne ich mich nicht aus, das muss man selbst googeln.
@amiganer681130
@amiganer681130 Жыл бұрын
@@MarsCorporations Mir geht es darum, die Potenz möglichst genau errechnen zu können. Ja, es geht um Integer, aber 2^1024 sind schon 1,7977E308 (308 Nullen), was ist dann 2^2048? Vielleicht kann mal wer kurz sagen, wieviele Stellen denn eine solche Primzahl haben sollte (nicht in bit, 10er System bitte). Diese Zahlen kann ich mir gerade nicht mehr selber vorstellen.
@Edsalahr
@Edsalahr Жыл бұрын
Sollte für die Kongruenz nicht ≡ benutzt werden anstatt = (4:34)
@Florian.Dalwigk
@Florian.Dalwigk Жыл бұрын
Man kann beides nehmen
@justizirtum
@justizirtum 7 ай бұрын
Wie schlimm ist es eigentlich, wenn man für den RSA algorithmus ausversehen zwei dreihundert stellige nicht Primzahlen erwischt, weil der Miller rabin Algorithmus ja probabilistisch ist?
@Florian.Dalwigk
@Florian.Dalwigk 7 ай бұрын
Dann funktioniert der RSA nicht.
@justizirtum
@justizirtum 7 ай бұрын
Aber wieso verwendet man dann probabilistische Algorithmen dafür? Ich meine, sind die bei 300 stelligen Primzahlen überhaupt sicher
@Florian.Dalwigk
@Florian.Dalwigk 7 ай бұрын
Wird im Video erklärt. Gerade bei 300-stelligen Primzahlen ist die Wahrscheinlichkeit, dass der Test fehlschlägt, extrem gering.
Ich habe eine NSA Geheimbotschaft geknackt!
8:46
Florian Dalwigk
Рет қаралды 9 М.
Car Bubble vs Lamborghini
00:33
Stokes Twins
Рет қаралды 45 МЛН
Der große Satz von Fermat Teil 1
16:59
Christian Spannagel
Рет қаралды 277 М.
Mathe-News: 🚨 Die größte bekannte Primzahl
37:03
DorFuchs
Рет қаралды 26 М.
Texte UNKNACKBAR verschlüsseln (One-Time-Pad)
10:27
Florian Dalwigk
Рет қаралды 29 М.
American was shocked by 7 Slavic countries word differences!!
15:29
World Friends
Рет қаралды 513 М.
Was ist eine BLOCKCHAIN? (einfach erklärt)
7:40
Florian Dalwigk
Рет қаралды 78 М.
Der Satz von Euler
12:13
Christian Spannagel
Рет қаралды 101 М.
Der GEBURTSTAGSANGRIFF 🎉 🎊🎂 (einfach erklärt)
9:29
Florian Dalwigk
Рет қаралды 4,4 М.
Unimathe lesen lernen | Informatikstudium
8:28
Florian Dalwigk
Рет қаралды 30 М.
Symmetrische vs. asymmetrische Verschlüsselung
11:53
Florian Dalwigk
Рет қаралды 48 М.