0

Python の gmpy2 拡張モジュールには、 mpz と呼ばれる多倍精度整数型があります。それにはpowmod(x, y, m)関数が含まれており、Ruby にはその関数がありません。最近、Ruby にはpowmod. OpenSSL モジュールに隠されています。

require 'openssl'
result = a_big_int.to_bn.mod_exp(exponent, modulo)

gmpy2にもある別の関数は、私が見逃していたdivm(...).

divm(a, b, m) は、b * x == a modulo m となるような x を返します。そのような値 x が存在しない場合、ZeroDivisionError 例外を発生させます。

OpenSSL モジュールには、さらに別のサプライズがあるかどうか、またはそのような機能を備えた宝石があるかどうか知っていますか? お急ぎの場合は大変助かります。

4

2 に答える 2

0

これらが Ruby または Python でどの程度アクセス可能かはわかりません。


それはpowmod(x, y, m)...

int BN_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
    const BIGNUM *m, BN_CTX *ctx);

divm(a, b, m)...

int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a,
    const BIGNUM *d, BN_CTX *ctx);

OpenSSL のbn(3)で完全なドキュメントを参照できます。

于 2014-02-25T06:02:34.580 に答える