/** * Return delta to last IP address * * @return IPv6 */ public function getDelta() { if ($this->delta === null) { if ($this->prefix == 0) { $this->delta = new $this->ip_class(constant("{$this->ip_class}::MAX_INT")); } else { $this->delta = new $this->ip_class(gmp_sub(gmp_shiftl(1, constant("{$this->ip_class}::NB_BITS") - $this->prefix), 1)); } } return $this->delta; }
function tea_decrypt(&$v0, &$v1, $key) { $sum = "0xC6EF3720"; $delta = "0x9e3779b9"; for ($i = 0; $i < 32; $i++) { $v1 = hexdec(gmp_strval(gmp_and(gmp_sub("{$v1}", gmp_xor(gmp_add(gmp_shiftl("{$v0}", 4), $key[2]), gmp_xor(gmp_add("{$v0}", "{$sum}"), gmp_add(gmp_shiftr('0x' . dechex($v0), 5), $key[3])))), '0xffffffff'), 16)); $v0 = hexdec(gmp_strval(gmp_and(gmp_sub("{$v0}", gmp_xor(gmp_add(gmp_shiftl("{$v1}", 4), $key[0]), gmp_xor(gmp_add("{$v1}", "{$sum}"), gmp_add(gmp_shiftr('0x' . dechex($v1), 5), $key[1])))), '0xffffffff'), 16)); $sum = hexdec(gmp_strval(gmp_and(gmp_sub("{$sum}", "{$delta}"), '0xffffffff'), 16)); } }