-1

using System.Numerics.BigInteger;負の指数で modPowを使用して実行しようとしています。例外に関するドキュメントを読みました。そのため、いくつかのトリックを行いました

//a^(-x) mod n == (a^(-1))^x mod n
BigInteger tmp = BigInteger.ModPow(BigInteger.Divide(BigInteger.One, a), 
                 secretKey, pCommon);
BigInteger resBigInteger = BigInteger.Multiply(b, tmp); 

しかし、tmp は 0 です。どうすればその問題を解決できますか?

4

1 に答える 1

1

あなたの「トリック」は自分をだますだけです。BigInteger.Divide(BigInteger.One, a)が 1 でない限り、ほぼ常にゼロaです。いずれにせよ、これは剰余逆数を計算する方法ではありません。拡張ユークリッド アルゴリズムを実装する必要があります。または、完全な因数分解がある場合は、 Φ(pCommon) - 1 == -1 modpCommonを計算できます。ここで、Φ(n) はeuler totient functionです。aapCommon

于 2013-10-02T20:52:47.130 に答える