私は、過去1週間半の間、RSA暗号化のためにPythonで大きな素数を生成しようとしていました。フェルマーの素数性テストは512ビットのスケールでは実行不可能であり、私はMiller-Rabinの周りを頭で覆うことはできません。 (私は13です)オンラインのすべてのスクリプトは、使用しているバージョンの下でPythonのバージョンで動作するようです。大規模な素数を生成するにはどうすればよいですか? (はい、確率的素数は大丈夫です)大きい(512ビット+)素数を生成するPython 3.6
0
A
答えて
1
ここでは私のミラー・ラビン首相チェッカーです:
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
あなたが保証プライム(ない可能性プライムを)したい場合は、それは非常に配置することは困難ではありません。 Pocklingtonによる方法については、my blogを参照してください。
+0
あなたの関数の正確さを知っていますか? –
+1
* k *の値によって異なります。エラーの可能性を減らしたい場合は、より大きな* k *を使用してください。しかし、512桁の数字では、* k *で十分です。あなたがエラーの可能性を心配しているなら、プライムを生み出すことが保証されている私のブログに記載されているPocklingtonの方法を使用してください。 – user448810
関連する問題
- 1. probablePrimeを使用して素数を生成する。 probablePrime(512、randomSeed);
- 2. Anaconda 4.3.0 python 3.6(64ビット)インストーラセットアップクラッシュウィンドウ
- 3. 本当に大きな素数を生成する
- 4. Python 3.6、64ビット版の11gクライアント用cx_oracle
- 5. Pythonで「大きな」乱数を生成する方法は?
- 6. 単調増加整数の生成(最大64ビット)
- 7. SSH用のSSLキーペアを生成するとき、使用できる最大ビット数(-b)は何ですか?
- 8. ReferenceTableオーバーフロー(最大= 512)JNI
- 9. linuxにpython 3.6をインストールできない
- 10. Pythonで1000番目の素数を生成するには?
- 11. 素数を生成するループ内のPython Printステートメント
- 12. 大きなデータフレーム用のMS SQL ServerへのPython 3.6接続
- 13. Python 3.6 - 数字のキーにアクセスする
- 14. Python 3.6(32ビット)ウィンドウ用のTensorflowのインストール7
- 15. Python xarray.concat次にxarray.to_netcdfが新しいファイルサイズを大きく生成する
- 16. 大きなPythonビット配列のセクションに新しい値を配置する
- 17. どの要素がクロムに大きなマージンを生成していますか?
- 18. 非常に大きな乱数を生成するJava
- 19. 大きな乱数を生成する方法C
- 20. 一意の数字の大きなランダムシーケンスを生成する
- 21. 非常に大きな乱数をC++で生成する
- 22. C++で大きな乱数/キーを生成する方法
- 23. keytoolで128ビット鍵を生成する
- 24. Pythonで大きな数値をダイビングするときにオーバーフローエラーが発生する
- 25. C++で512ビット整数を定義するにはどうすればよいですか?
- 26. Pythonで大きな数字の素因数を取得する方法は?
- 27. 1とCの32ビット整数の最大値の間に100%の乱数を生成するには
- 28. 32ビットシステムで48ビットの数値を生成する方法
- 29. 指定された最後の数字で大きな素数を生成する
- 30. ビット操作を使わない乱数生成
フェルマーの素数性テストは、あなたが興味を持っているサイズの数字に対して完全に実行可能でなければなりません。 'pow(2、p-1、p)== 1 ' –