皆さんに二つお知らせがあります。一つは嬉しいお知らせです。もう一つは悲しいお知らせです。
嬉しいお知らせとは、Crypt::DSAはバージョン0.13からMath::Pariがなくても動くようになりました! ということです。他にもCrypt::DHなどでMath::Pariが不要となりました。 そして悲しいお知らせとは、このページが役に立たなくなったということです……
CPANのCrypt::DSAは結構色々なモジュールを必要とします。Crypt::DSAはDigest::SHA1、Crypt::RnadomとMath::Pariを必要とし、Crypt::RnadomはClass::LoaderとMath::Pariを必要とします。
コンパイル環境のないレンタルサーバなどで利用するにはどうしましょう? 上記のモジュールの中で、Crypt::RnadomとClass::LoaderはPuerPerlなのでそのまま設置してしまえばよいです。Digest::SHA1は、Digest::SHA::PurePerlがありますので、なんとかなりそうです(パッケージ名を変える必要があるでしょうが)。
そうすると、残るはMath::Pariです。Math::Pariさえなんとかなれば、Crypt::DSAを使うことができそうです。
そこで登場するのがMath::Pari::PP4Cryptです。依存モジュールはMath::BigInt 1.70以降
Pari.pm v2.01 (2005-02-26)
パスの通っているディレクトリにMathディレクトリを作成し、そこに設置します。
Crypt::DSAから利用するためのモジュールですので、基本的に単体で使うものではありません。一応、pari2num, pari2pv, isprime, floor, Mod, lift, sqrt
がexport可能です。また、PARI
関数が自動的にexportされます。
use Math::Pari qw(Mod isprime lift); # このPariは実際にはMath::Pari::PP4Crypt # Modを使う my $n = PARI(10) ** PARI(15) + PARI(3); my $a = Mod(2,$n); print $a ** ($n-1); # Mod(70605991389233,1000000000000003) lift(Mod(3,5) + Mod(2,5)); # = 0 # 素数かどうか判定する isprime('1412483196769018221764025574442928329625802622663'); # 素数