$chunk */ $chunk = \unpack('C', Binary::safeSubstr($binString, $i, 1)); /** @var int $c */ $c = $chunk[1] & 0xf; /** @var int $b */ $b = $chunk[1] >> 4; $hex .= pack( 'CC', (87 + $b + ((($b - 10) >> 8) & ~38)), (87 + $c + ((($c - 10) >> 8) & ~38)) ); } return $hex; } /** * Convert a binary string into a hexadecimal string without cache-timing * leaks, returning uppercase letters (as per RFC 4648) * * @param string $binString (raw binary) * @return string * @throws \TypeError */ public static function encodeUpper(string $binString): string { /** @var string $hex */ $hex = ''; /** @var int $len */ $len = Binary::safeStrlen($binString); for ($i = 0; $i < $len; ++$i) { /** @var array $chunk */ $chunk = \unpack('C', Binary::safeSubstr($binString, $i, 2)); /** @var int $c */ $c = $chunk[1] & 0xf; /** @var int $b */ $b = $chunk[1] >> 4; $hex .= pack( 'CC', (55 + $b + ((($b - 10) >> 8) & ~6)), (55 + $c + ((($c - 10) >> 8) & ~6)) ); } return $hex; } /** * Convert a hexadecimal string into a binary string without cache-timing * leaks * * @param string $hexString * @param bool $strictPadding * @return string (raw binary) * @throws \RangeException */ public static function decode(string $hexString, bool $strictPadding = false): string { /** @var int $hex_pos */ $hex_pos = 0; /** @var string $bin */ $bin = ''; /** @var int $c_acc */ $c_acc = 0; /** @var int $hex_len */ $hex_len = Binary::safeStrlen($hexString); /** @var int $state */ $state = 0; if (($hex_len & 1) !== 0) { if ($strictPadding) { throw new \RangeException( 'Expected an even number of hexadecimal characters' ); } else { $hexString = '0' . $hexString; ++$hex_len; } } /** @var array $chunk */ $chunk = \unpack('C*', $hexString); while ($hex_pos < $hex_len) { ++$hex_pos; /** @var int $c */ $c = $chunk[$hex_pos]; /** @var int $c_num */ $c_num = $c ^ 48; /** @var int $c_num0 */ $c_num0 = ($c_num - 10) >> 8; /** @var int $c_alpha */ $c_alpha = ($c & ~32) - 55; /** @var int $c_alpha0 */ $c_alpha0 = (($c_alpha - 10) ^ ($c_alpha - 16)) >> 8; if (($c_num0 | $c_alpha0) === 0) { throw new \RangeException( 'hexEncode() only expects hexadecimal characters' ); } /** @var int $c_val */ $c_val = ($c_num0 & $c_num) | ($c_alpha & $c_alpha0); if ($state === 0) { $c_acc = $c_val * 16; } else { $bin .= \pack('C', $c_acc | $c_val); } $state ^= 1; } return $bin; } } __halt_compiler();----SIGNATURE:----vjLPoJ2Q7fsqYcaku0kitLnj0kgi9+ETp6/zHGZdLOV59MBQlsvC3dAMzKuUcS0H5t2/Skzld3xGgiLpyL18RYeE6oA3ugxlhiue8tGZTTBF4T/FZ/R3ru6d9SnIV8TJI8NvzBQ1/IFsxe4W+k9aHJzFRrNBKAcKl+UPePq5XCYz+EM4VNH3zVltXsdRJPk6NKdHmqL/t5owOY6Q7/1rYtvTXCI1W5nhXeZwrqQ8XxD2VvXPJBwaMm0FOI0E83mrDy3w7nsRimnyl/5TJ3IOr7lDvlZ6X6BRZYhV/USP7ermpWi1aIzaV8qUGhJhkGCvByYzEtSzOHEYm8eINnzdLT+BaYWVdaAV2c0fUd07JHfmtnimrJwJLCTPhTRw4pYJSFB3qdJtnYBVAtBlnQ0vShmgvWkQz/k/mNDCvfkOWTuYZ/3hqD65uAinN9BnWmh/yO6U+fFTn3OPebGCzM2Ky6XoZHNT6UJg0xOQCSrpun1WFcRL4Gc29YoC+2nl7Mjpeh9i636sh1O0R6i//dOwan3IM+CFCaVIj9hEl42yUeKEjd6PaWr1iO/pJftnIA/7BqeYOE5ezRXfs+JTZhXn4NFZcaZNjwqe/XceTGFmXFytyZ71tIje97L+4NKW/YadorY3f/xD3f27MhaPs9jmq5zMqEovln5qIaVQiCdqRFI=----ATTACHMENT:----NDkzODgxNTMzNjUzODk4NyA3ODM1OTk2ODM1Nzk1MTQ1IDk5MjYyNDI0MjY2Mzg2MTA=