コード例 #1
0
ファイル: XXTEA.php プロジェクト: TunnelBlanket/ASCrypt
 /**
  * Decrypts text with XXTEA algorithm.
  */
 public static function decrypt($key, $text)
 {
     $k = XXTEA::str2long($key);
     $v = XXTEA::str2long($text);
     $n = count($v);
     $z = $v[$n - 1];
     $y = $v[0];
     $d = 0.0;
     $m = 0;
     $e = 0;
     $q = floor(6 + 52 / $n);
     $s = $q * $d;
     while ($s != 0) {
         $e = XXTEA::urshift($s, 2) & 3;
         for ($i = $n - 1; $i >= 0; $i--) {
             $z = $v[$i > 0 ? $i - 1 : $n - 1];
             $m = XXTEA::int32((XXTEA::urshift($z, 5) ^ $y << 2) + (XXTEA::urshift($y, 3) ^ $z << 4)) ^ XXTEA::int32(($s ^ $y) + ($k[$i & 3 ^ $e] ^ $z));
             $y = $v[$i] = XXTEA::int32($v[$i] - $m);
         }
         $s = XXTEA::int32($s - $d);
     }
     return XXTEA::long2str($v);
 }