예제 #1
0
 /**
  * Cast 128 F3 function
  *
  * @param $r integer The right half of the data being encrypted in cast_128()
  * @param $i integer The round number (1-16) in cast_128()
  * @return integer The value after the F3 transformation
  */
 private function f3($r, $i)
 {
     $n = $this->_mkey[$i] - $r;
     $n = parent::uInt32(parent::rotBitsLeft32($n, $this->_rkey[$i]));
     $n = parent::dec2Str($n, 4);
     $f = parent::uInt32((self::$_s1[ord($n[0])] + self::$_s2[ord($n[1])] ^ self::$_s3[ord($n[2])]) - self::$_s4[ord($n[3])]);
     return $f;
 }
예제 #2
0
 /**
  * CAST-256 F3 function
  *
  * @param $d integer The the data input
  * @param $m integer The 32 bit masking key
  * @param $r integer The round number
  * @return integer The value after the F3 calculation
  */
 private function f3($d, $m, $r)
 {
     $n = parent::uInt32($m - $d);
     $n = parent::uInt32(parent::rotBitsLeft32($n, $r));
     $n = parent::dec2Str($n, 4);
     return parent::uInt32((self::$_s1[ord($n[0])] + self::$_s2[ord($n[1])] ^ self::$_s3[ord($n[2])]) - self::$_s4[ord($n[3])]);
 }