安全な認証のために SRP プロトコルを実装しようとしています。私の問題は、負の数の ModPow を計算する必要があるときに、負の数も返すことです。モジュラスではなく残りと呼ばれる可能性があることは知っていますが、正しいハッシュを生成するには正のモジュラスを取得する必要があります。
どうすればそれができますか?
安全な認証のために SRP プロトコルを実装しようとしています。私の問題は、負の数の ModPow を計算する必要があるときに、負の数も返すことです。モジュラスではなく残りと呼ばれる可能性があることは知っていますが、正しいハッシュを生成するには正のモジュラスを取得する必要があります。
どうすればそれができますか?
次の理由により、結果からモジュラスの任意の倍数を加算 (または減算) できます。r + km = r (mod m)
結果は in: にあると仮定する-m < r < 0
ので、単純に を使用しますr + m
。
適切なことは、累乗の前に、m を法として、基数の最小の非負の剰余を見つけることです。つまり、をr <- r + m
累乗します。
SRP には、負の数の ModPow を取得する必要がある操作はありません。ModPow に関連するすべての演算は剰余演算で行われることになっています。これは、実際には、すべての入力と出力が非負で、モジュラス N よりも小さい必要があることを意味します。
負の数になる場合、おそらく減算を行った後、負でなくなるまで結果に N を追加する必要があります。巨大な負の値の場合、x % N を計算することは、N をもう 1 つ追加するだけで正になるまで N を追加することと同じです。