I'm writing a script to post/validate payments to www.clickbank.com ....
They provide a method for passing encrypted data to them, and if you get it
back on your "thank you" page, you know 100% that the customer has paid.
Unfortunately, the validation routines are only available in Perl and C...
and unfortunately, I'm not that proficient in either, at least not enough to
duplicate it in PHP.

Could someone tell me what is happening here, and if there is a good way in
PHP to duplicate it.  I run into this type of thing often with payment
processors, and am forced to use less "good" methods....

sub valid
 { ### Copyright Keynetics Inc. Patents pending.
    my($a,$b,$c,$h,$i,$l,$q,$w,$x,$y,$z,@s,@v);

   ###############################
   $a='YOUR_SECRET_KEY_GOES_HERE';
   ###############################

   $q='&'.substr($ENV{'QUERY_STRING'},0,256);
   $q=~/\Wseed=(\w+)/; $b=$1;
   $q=~/\Wcbpop=(\w+)/; $c=$1;

   return 0 unless $a&&$b&&$c;

   $h=0x80000000; $l=0x7fffffff;
   $q=''; $w=uc "$a $b"; $x=$y=$z=17;
   @v=unpack("C*",$w); $n=1+$#v;
   for($i=0;$i<256;$i++)
   { $w=(($x&$l)+($y&$l))^(($x^$y)&$h);
     $w=($w<<$z)|($w>>(32-$z));
     $w=(($w&$l)+$v[$i%$n])^($w&$h);
     $s[$i&7]+=$w&31; $z=$y&31; $y=$x; $x=$w;
   }

   for ($i=0;$i<8;$i++)
   { $q.=substr('0123456789BCDEFGHJKLMNPQRSTVWXYZ',$s[$i]&31,1); }

   return $c eq $q;
 }

Any help/pointers to resources would be greatly appreciated. Thanks in
advance.

-Brian Tanner


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to