2010-12-05 2 views
1

可能性の重複:
Factor a large number efficiently with gmpファクタリング多数

私はすでにそれを掲載知っているが、人々は私が何を意味するのか誤解し、私はそれを修正するまで、ポストが死亡しました。
私が必要とするのは、C++とGMP(Gnu Multiple Precession lib)を使うか、あまり好ましくない方法で、効率的に(数の素因数を見つける)大きな数(2048ビットになるかもしれない)を因数分解する方法です。
数字は実質的にランダムであるため、因数分解が困難な可能性はほとんどなく、因数を計算するのが難しい場合でも数をリロールすることはできます(選択できません)。
どうすればよいですか?

+1

あなたがこれを行うことができれば、お知らせください。なぜならば、正確なアルゴリズムにかかわらず、すべての形式の公開鍵/秘密鍵の暗号化を本質的に破っているからです。さようなら、さようならssh、もっと重要なのはさようなら暗号化された軍事通信。 – slebetman

+4

投稿はスタックオーバーフローで死ぬことはありません。問題はまだそこにある。だから問題は何ですか? –

+0

多数の要因を考慮する必要がありますか?あなたがあなたの範囲内の数字を取得するまで、あなたは数字を選択することができます、なぜ小さな素数の多くを掛けてみませんか?次に、あなたはすでに要素を知っています... – jtdubs

答えて

0

またはgeneral number field sieveを試しましたか? (QS単純で簡単に実装するために、GNFS速く、非常に大きな数字のために、しかし、あなたの番号がGNFSがQSよりもはるかに高速であるためには十分な大きさではないかもしれない)

編集:QS間a paper by Eric Landquistによると、クロスオーバーポイントとGNFSは約110桁=約365ビットです。

2

(おそらく)効率的な方法はありません。この仮定は現代の暗号の基礎である。

+0

downvoteを説明してください。それは誰にも喜ばないかもしれませんが、それが答えです。 –

+0

-1:この文脈では、OPからの定量的な仕様がないと「効率的」では意味がありません。 –

+0

あなたはOPのコメントを無視しています:「数値は実質的にランダムであり、因果関係が難しい可能性はほとんどありません」 –

0

これを効率的に行う方法は、現在使用されている多くの暗号化アルゴリズムを壊すことになります。
これはNPCの問題ですので、

+0

あなたはOPのコメントを無視しています:「数値は実質的にランダムであり、因果関係が成立しにくい可能性はほとんどありません」 –

+0

@Jason:「数値は実質的にランダムであり、因数分解するのはほとんどない」少し容疑者。 RSA鍵の生成は、実質的に乱数を使用して行われます(ただし、常に低位ビットが1に設定されています)。 –

0

多数の要因を効率的に考慮する方法はありません。理由と最新技術については、Wikipediaを参照してください。

コメントが指摘しているように、この問題の難しさは、多くの現代の暗号化、特に公開鍵暗号化の基礎です。

あなたはとすることができます。は小さな素数のテーブルを格納しています。数字が「あまりにも硬い」(小さな小数点を使い果たした場合)、次に巻き戻します。

+0

なぜdownvotes(これと同様の回答)?あなたは、多数の要因を効率的に分析する方法を求めました。そのような方法はありません。状況の現実が好きではないという理由だけで、正しい答えを下降させる理由はありません。 –

+0

あなたはOPのコメントを無視しています:「数値は実質的にランダムであり、因果関係が難しくなる可能性はほとんどありません」 –

+0

@Jason:数字は実質的にランダムであり、因数分解することはほとんどありません少し容疑者。 RSA鍵の生成は、実質的に乱数を使用して行われます(ただし、常に低位ビットが1に設定されています)。 –

1

なぜそれを考慮するのが難しくないと思いますか?はい、いくつかの小さな要因があります。しかし、残りの部分は、その大きさで十分な大きさであり、しばしばそれを考慮するには深刻な作業が必要になるでしょう。

小さな魚を池の外に出すために、いくつかの小さな素数で試行分割を提案します。その後、Pollardのrhoメソッドを試してみるかもしれませんが、それは数多くのビットで数字にチャンスがあるのではないかと疑います。二次的なふるいが良いでしょう。