home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / SSH2MP.pm < prev    next >
Encoding:
Perl POD Document  |  2001-06-03  |  906 b   |  50 lines

  1. # $Id: SSH2MP.pm,v 1.3 2001/06/03 23:40:32 btrott Exp $
  2.  
  3. package Net::SSH::Perl::Util::SSH2MP;
  4. use strict;
  5.  
  6. use Math::Pari qw( PARI floor pari2num Mod lift );
  7.  
  8. sub bitsize {
  9.     return pari2num(floor(Math::Pari::log($_[0])/Math::Pari::log(2)) + 1);
  10. }
  11.  
  12. sub bin2mp {
  13.     my $s = shift;
  14.     my $p = PARI(0);
  15.     for my $b (split //, $s) {
  16.         $p = $p * 256 + ord $b;
  17.     }
  18.     $p;
  19. }
  20.  
  21. sub mp2bin {
  22.     my($p, $l) = @_;
  23.     $l ||= 0;
  24.     my $base = PARI(256);
  25.     my $res = '';
  26.     {
  27.         my $r = $p % $base;
  28.         my $d = PARI($p-$r) / $base;
  29.         $res = chr($r) . $res;
  30.         if ($d >= $base) {
  31.             $p = $d;
  32.             redo;
  33.         }
  34.         elsif ($d != 0) {
  35.             $res = chr($d) . $res;
  36.         }
  37.     }
  38.     $res = "\0" x ($l-length($res)) . $res
  39.         if length($res) < $l;
  40.     $res;
  41. }
  42.  
  43. sub mod_inverse {
  44.     my($a, $n) = @_;
  45.     my $m = Mod(1, $n);
  46.     lift($m / $a);
  47. }
  48.  
  49. 1;
  50.