/** * 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; }
/** * 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])]); }