Next: , Previous: , Up: Integer Functions   [Index]


5.7 べき乗関数

Function: void mpz_powm (mpz_t rop, const mpz_t base, const mpz_t exp, const mpz_t mod)
Function: void mpz_powm_ui (mpz_t rop, const mpz_t base, unsigned long int exp, const mpz_t mod)

(baseexp乗) modulo modを計算し,ropに格納します。

base^-1 mod modの逆数が存在する場合,expが負の値でも問題ありません(Number Theoretic Functionsmpz_invert参照)。逆数が存在しない場合はゼロ除算が発生します。

Function: void mpz_powm_sec (mpz_t rop, const mpz_t base, const mpz_t exp, const mpz_t mod)

(baseexp乗) modulo modを計算してropに格納します。

exp > 0かつmodが奇数であるという前提が必要な関数です。

この関数は,同時刻に同サイズの引数に対して同時キャッシュアクセスするために作られています。関数発行時に引数は同じ場所にあり,計算機の状態も同一である,ということも前提となっています。この関数は暗号化を目的としており,サイドチャンネル攻撃に対する耐性が求められるからです。

Function: void mpz_pow_ui (mpz_t rop, const mpz_t base, unsigned long int exp)
Function: void mpz_ui_pow_ui (mpz_t rop, unsigned long int base, unsigned long int exp)

baseexpを計算してropに格納します。0^0の場合は1を返します。