Ich habe versucht, große Primzahlen mit Python für RSA-Verschlüsselung für die letzten eineinhalb Wochen, ohne Glück zu generieren. Der Fermat-Primalitätstest ist im Maßstab von 512 Bit unmöglich, und ich kann meinen Kopf nicht ganz um Miller-Rabin wickeln. (Ich bin 13) Alle Online-Skripte scheinen mit Versionen von Python zu funktionieren, die unter denen liegen, die ich verwende. Was soll ich tun, um massive Primzahlen zu generieren? (Ja, probabilistische Primzahlen sind in Ordnung.)Generieren Sie große (512 Bit +) Primzahl Python 3,6
Antwort
Hier ist mein Miller-Rabin-prime-Checker:
def isPrime(n, k=5): # miller-rabin
from random import randint
if n < 2: return False
for p in [2,3,5,7,11,13,17,19,23,29]:
if n % p == 0: return n == p
s, d = 0, n-1
while d % 2 == 0:
s, d = s+1, d/2
for i in range(k):
x = pow(randint(2, n-1), d, n)
if x == 1 or x == n-1: continue
for r in range(1, s):
x = (x * x) % n
if x == 1: return False
if x == n-1: break
else: return False
return True
Wenn Sie eine garantierte prime wollen (kein wahrscheinlich prime), das ist nicht sehr viel schwieriger zu gestalten. Eine Methode wegen Pocklington siehe my blog.
Kennen Sie die Genauigkeitsrate Ihrer Funktion? –
Es hängt von dem Wert von * k * ab. Wenn Sie weniger Fehlermöglichkeiten haben möchten, verwenden Sie ein größeres * k *. Aber für 512-stellige Zahlen ist * k * ausreichend. Wenn Sie sich über die Möglichkeit eines Fehlers Sorgen machen, verwenden Sie die Methode von Pocklington, die in meinem Blog beschrieben wird, die garantiert eine erstklassige Leistung liefert. – user448810
- 1. Generiere große Primzahl mit den angegebenen letzten Ziffern
- 2. Primzahl Generieren Puzzle (Edge Cases)
- 3. CSV-Organisation in Python 3,6
- 4. Pip funktioniert nicht Python 3,6
- 5. Wie definiere ich eine 512-Bit-Ganzzahl in C++?
- 6. Suche Primzahl und die Zählung der Primzahl - Python
- 7. Generate Primzahl mit OpenSSL
- 8. Python Primzahl-Checker funktioniert nicht
- 9. Generieren von 128-Bit-Schlüsseln mit Keytool
- 10. PYTHON: Eine n-te Primzahl finden
- 11. So finden Sie die Primzahl
- 12. Wie man zwei große Zahlen (sagen wir 512 Bits) in Java multipliziert
- 13. Ein schnelles Primzahl-Sieb in Python
- 14. Convert unterschiedliche Struktur JSON-Datei in Datenrahmen in Python 3,6
- 15. Python - überprüfen, ob es Primzahl ist
- 16. Primzahl Finder, dann ist es in Python
- 17. Primzahl und Perfect Square Checker in Python
- 18. Suche nach der 10001sten Primzahl (in Python)?
- 19. Fehler in pyomo Ausdruck Generierung mit Summe mit Python 3,6
- 20. Fetch HTML-Tabelle Zeile Daten mit Python 3,6 schöne Suppe
- 21. Lesen von E-Mail-Text mit Python 3,6
- 22. Generieren Sie eine Wahrheitstabelle basierend auf 3-Bit-Gray-Code
- 23. So generieren Sie zufällige 64-Bit-Ints mit Boost zufällig
- 24. Bit-Manipulation für große Integer-Klassen?
- 25. Überprüfen Sie die Primzahl auf große Werte in Java, ohne eingebaute Funktionen zu verwenden.
- 26. Durchführbarkeit von MongoDB auf Linode 512 VPS?
- 27. Algorithmus zum Generieren einer Klammermodellliste in Python
- 28. Idris - Definieren Sie eine Primzahl Typ
- 29. Suche nach einer Primzahl
- 30. Primzahl-Algorithmus: Graph-Theorie
Der Fermat-Primalitätstest sollte für Zahlen der Größe, an der Sie interessiert sind, vollkommen durchführbar sein. Stellen Sie nur sicher, dass Sie die 3-arg-Version von pow verwenden, z. 'pow (2, p-1, p) == 1' –