問題タブ [montgomery-multiplication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
modulo - モンゴメリー乗算を使用して (大きな数) の計算を高速化できますか? % (素数)
この質問は、私がほとんどこの質問の下に書いたコメントに由来します。ここで、ザックは大きな数を法とする大きな数の階乗を計算しています (この質問のために素数であると仮定します)。ザックは階乗の従来の計算を使用しており、乗算ごとに剰余を取ります。
検討すべき代替手段はモンゴメリー乗算であるとほとんどコメントしましたが、それについてもっと考えてみると、この手法が同じ被乗数による複数の乗算を高速化するために使用されているのを見ただけです (特に、n mod p の計算を高速化するため)。
私の質問は、モンゴメリー乗算を使用して n の計算を高速化できるかどうかです! 大きな n と p の mod p?
verilog - Verilog コード - コンパイルは正常に行われるが、シミュレーションが実行されない
Verilog での構造モデリングについてはかなり良い経験がありましたが、他のモデリング方法についてはほとんど経験がありません。だから、親切に私を助けてください。コードは正常にコンパイルされますが、シミュレートするとハングします。何も起こりません。重要な場合、コードはモンゴメリーモジュラー乗算器です。私の学力レベルを少し上回っていますが、アルゴリズムを理解し、コードを書くことができました。シミュレーションが実行されないのはなぜですか? よろしくお願いします!
cryptography - OpenSSL ライブラリを使用したモンゴメリ リダクション フォーム
N は 1024 ビットです。以下のように、メッセージ M (512 ビット) をモンゴメリー簡約形式に変換する必要があります。
M' = M * R^{-1} mod N
ここで、R = 2 ^ 512 (mod N)
どうすれば結果を達成できますか?
c++ - RSA のモンゴメリー乗算: c=m^e%n
モンゴメリー乗算は、RSA 暗号化で使用される c=m^e%n を計算するための暗号化プロセスを高速化するためにどのように機能しますか? モンゴメリー乗算は a*b%n を効率的に乗算できることは理解していますが、m^e%n を見つけようとするとき、モンゴメリー乗算を毎回ループして計算するよりも m*me 回を乗算するより効率的な方法はありますか?
ここでより大きな数を扱うことができるように、gmp ライブラリを使用しています。r と r_p は別の関数で事前に計算されており、グローバルです。この例では、10 のべき乗で作業しています (ただし、2 のべき乗で作業する方が効率的であることはわかっています)。
乗算の前にモンゴメリ形式に変換し、for ループで乗算 m*m を繰り返し、m^e ステップの最後で通常の世界に変換します。forループで循環するだけでなく、操作 m^e%n を別の方法で計算する別の方法があるかどうか知りたいです。今のところ、これが計算のボトルネックであると信じていますが、間違っている可能性が非常に高いです。
実際のモンゴメリ乗算ステップは、以下の関数で発生します。
これは、モンゴメリー乗算の最適化で RSA 暗号化が機能する方法ですか?