冪剰余
Pythonで右向きバイナリ法(指数の左端ビットから順に見ていく方法)を使った例である。
この方法では、初期化後は変数 result(とループ変数の iteration)だけが変化していき、他の変数は変化しないという利点がある。このことからハードウェアによる暗号処理の実装を高速かつ安価に実装できる。
firstModulus = base % modulo という行は、ちょっとした最適化であり、前の手法にも適用可能である。
これらのバイナリ法では、指数の2進数表現の各ビットごとに自乗の計算が必要であり、そのビットが1であるときだけ乗算も行う。
右向きバイナリ法では、乗算回数をさらに減らす bit windowing optimization や sliding window optimization がある。
また、剰余を求める計算(%)の高速化として、モンゴメリ乗算がある。