sub Encrypt($$$) { do 'bigint.pl'; $_ = shift; my $n = shift; my $m = shift; my $d = 0; my $k; s/^.(..)*$/0$&/;($k=unpack('B*', pack('H*', $_)))=~s/^0*//; my $x = 0; my $z = $n=~s/./$x=&::badd(&::bmul($x, 16), hex$&)/ge; my $w = ((2*$d-1+$z)&~1)/2; $_ = substr($m."\0"x$w, 0, $w); my $c = 0; s/.|\n/$c=&::badd(&::bmul($c, 256), ord$&)/ge; my $r = 1; my $t; $_ = $k; s/./$r=&::bmod(&::bmul($r, $r), $x), $&?$r=&::bmod(&::bmul($r, $c), $x):0,""/ge; ($r, $t)=&::bdiv($r, 256),$_=pack(C, $t).$_ while$w--+1-2*$d; return unpack('H*', $_); }