From c5a9ee5234a5db1dd5c57ddf9254a86641ed6242 Mon Sep 17 00:00:00 2001 From: terrafrost Date: Fri, 26 Aug 2022 21:58:08 -0500 Subject: [PATCH] fix deprecated implicit float to int on 32-bit PHP 8.1 --- phpseclib/Crypt/Blowfish.php | 63 ++- phpseclib/Crypt/ChaCha20.php | 648 ++++++++++++------------ phpseclib/Crypt/Common/SymmetricKey.php | 13 +- phpseclib/Crypt/DES.php | 4 +- phpseclib/Crypt/Rijndael.php | 39 +- phpseclib/Crypt/Salsa20.php | 4 +- phpseclib/Crypt/Twofish.php | 17 + tests/Unit/Crypt/EC/KeyTest.php | 4 + tests/Unit/Crypt/RSA/LoadKeyTest.php | 4 + 9 files changed, 425 insertions(+), 371 deletions(-) diff --git a/phpseclib/Crypt/Blowfish.php b/phpseclib/Crypt/Blowfish.php index a816faa9..9a33dd0f 100644 --- a/phpseclib/Crypt/Blowfish.php +++ b/phpseclib/Crypt/Blowfish.php @@ -445,7 +445,7 @@ class Blowfish extends BlockCipher $j = 0; } } - $this->bctx['p'][] = self::$parray[$i] ^ $data; + $this->bctx['p'][] = self::$parray[$i] ^ intval($data); } // encrypt the zero-string, replace P1 and P2 with the encrypted data, @@ -465,6 +465,22 @@ class Blowfish extends BlockCipher } } + /** + * Initialize Static Variables + */ + protected static function initialize_static_variables() + { + if (is_float(self::$sbox2[0])) { + self::$sbox0 = array_map('intval', self::$sbox0); + self::$sbox1 = array_map('intval', self::$sbox1); + self::$sbox2 = array_map('intval', self::$sbox2); + self::$sbox3 = array_map('intval', self::$sbox3); + self::$parray = array_map('intval', self::$parray); + } + + parent::initialize_static_variables(); + } + /** * bcrypt * @@ -514,8 +530,8 @@ class Blowfish extends BlockCipher { self::initialize_static_variables(); - if (!self::$use_reg_intval) { - throw new \RuntimeException('ARM-32 systems require a workaround that slows bcrypt down too much'); + if (PHP_INT_SIZE == 4) { + throw new \RuntimeException('bcrypt is far too slow to be practical on 32-bit versions of PHP'); } $sha2pass = hash('sha512', $pass, true); @@ -701,9 +717,9 @@ class Blowfish extends BlockCipher $l = $in[1]; $r = $in[2]; - list($r, $l) = self::$use_reg_intval ? - self::encryptBlockHelperFast($l, $r, $sb_0, $sb_1, $sb_2, $sb_3, $p) : - self::encryptBlockHelperSlow($l, $r, $sb_0, $sb_1, $sb_2, $sb_3, $p); + list($r, $l) = PHP_INT_SIZE == 4 ? + self::encryptBlockHelperSlow($l, $r, $sb_0, $sb_1, $sb_2, $sb_3, $p) : + self::encryptBlockHelperFast($l, $r, $sb_0, $sb_1, $sb_2, $sb_3, $p); return pack("N*", $r, $l); } @@ -759,25 +775,26 @@ class Blowfish extends BlockCipher */ private static function encryptBlockHelperSlow($x0, $x1, array $sbox0, array $sbox1, array $sbox2, array $sbox3, array $p) { + // -16777216 == intval(0xFF000000) on 32-bit PHP installs $x0 ^= $p[0]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[1]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[2]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[3]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[4]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[5]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[6]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[7]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[8]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[9]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[10]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[11]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[12]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[13]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[14]; - $x1 ^= $this->safe_intval(($this->safe_intval($sbox0[($x0 & 0xFF000000) >> 24] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[15]; - $x0 ^= $this->safe_intval(($this->safe_intval($sbox0[($x1 & 0xFF000000) >> 24] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[16]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[1]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[2]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[3]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[4]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[5]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[6]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[7]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[8]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[9]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[10]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[11]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[12]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[13]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[14]; + $x1 ^= self::safe_intval((self::safe_intval($sbox0[(($x0 & -16777216) >> 24) & 0xFF] + $sbox1[($x0 & 0xFF0000) >> 16]) ^ $sbox2[($x0 & 0xFF00) >> 8]) + $sbox3[$x0 & 0xFF]) ^ $p[15]; + $x0 ^= self::safe_intval((self::safe_intval($sbox0[(($x1 & -16777216) >> 24) & 0xFF] + $sbox1[($x1 & 0xFF0000) >> 16]) ^ $sbox2[($x1 & 0xFF00) >> 8]) + $sbox3[$x1 & 0xFF]) ^ $p[16]; - return [$x1 & 0xFFFFFFFF ^ $p[17], $x0 & 0xFFFFFFFF]; + return [$x1 ^ $p[17], $x0]; } /** diff --git a/phpseclib/Crypt/ChaCha20.php b/phpseclib/Crypt/ChaCha20.php index e080d8fc..b2691b5d 100644 --- a/phpseclib/Crypt/ChaCha20.php +++ b/phpseclib/Crypt/ChaCha20.php @@ -279,10 +279,10 @@ class ChaCha20 extends Salsa20 // xor'ing and rotation are all on the same line so i'm keeping it on the same // line here as well // @codingStandardsIgnoreStart - $a+= $b; $d = self::leftRotate($d ^ $a, 16); - $c+= $d; $b = self::leftRotate($b ^ $c, 12); - $a+= $b; $d = self::leftRotate($d ^ $a, 8); - $c+= $d; $b = self::leftRotate($b ^ $c, 7); + $a+= $b; $d = self::leftRotate(intval($d) ^ intval($a), 16); + $c+= $d; $b = self::leftRotate(intval($b) ^ intval($c), 12); + $a+= $b; $d = self::leftRotate(intval($d) ^ intval($a), 8); + $c+= $d; $b = self::leftRotate(intval($b) ^ intval($c), 7); // @codingStandardsIgnoreEnd } @@ -357,424 +357,424 @@ class ChaCha20 extends Salsa20 // @codingStandardsIgnoreStart // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // columnRound - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 16); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 12); - $x0+= $x4; $x12 = self::leftRotate($x12 ^ $x0, 8); - $x8+= $x12; $x4 = self::leftRotate($x4 ^ $x8, 7); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 16); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 12); + $x0+= $x4; $x12 = self::leftRotate(intval($x12) ^ intval($x0), 8); + $x8+= $x12; $x4 = self::leftRotate(intval($x4) ^ intval($x8), 7); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 16); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 12); - $x1+= $x5; $x13 = self::leftRotate($x13 ^ $x1, 8); - $x9+= $x13; $x5 = self::leftRotate($x5 ^ $x9, 7); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 16); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 12); + $x1+= $x5; $x13 = self::leftRotate(intval($x13) ^ intval($x1), 8); + $x9+= $x13; $x5 = self::leftRotate(intval($x5) ^ intval($x9), 7); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 16); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 12); - $x2+= $x6; $x14 = self::leftRotate($x14 ^ $x2, 8); - $x10+= $x14; $x6 = self::leftRotate($x6 ^ $x10, 7); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 16); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 12); + $x2+= $x6; $x14 = self::leftRotate(intval($x14) ^ intval($x2), 8); + $x10+= $x14; $x6 = self::leftRotate(intval($x6) ^ intval($x10), 7); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 16); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 12); - $x3+= $x7; $x15 = self::leftRotate($x15 ^ $x3, 8); - $x11+= $x15; $x7 = self::leftRotate($x7 ^ $x11, 7); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 16); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 12); + $x3+= $x7; $x15 = self::leftRotate(intval($x15) ^ intval($x3), 8); + $x11+= $x15; $x7 = self::leftRotate(intval($x7) ^ intval($x11), 7); // rowRound - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 16); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 12); - $x0+= $x5; $x15 = self::leftRotate($x15 ^ $x0, 8); - $x10+= $x15; $x5 = self::leftRotate($x5 ^ $x10, 7); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 16); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 12); + $x0+= $x5; $x15 = self::leftRotate(intval($x15) ^ intval($x0), 8); + $x10+= $x15; $x5 = self::leftRotate(intval($x5) ^ intval($x10), 7); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 16); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 12); - $x1+= $x6; $x12 = self::leftRotate($x12 ^ $x1, 8); - $x11+= $x12; $x6 = self::leftRotate($x6 ^ $x11, 7); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 16); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 12); + $x1+= $x6; $x12 = self::leftRotate(intval($x12) ^ intval($x1), 8); + $x11+= $x12; $x6 = self::leftRotate(intval($x6) ^ intval($x11), 7); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 16); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 12); - $x2+= $x7; $x13 = self::leftRotate($x13 ^ $x2, 8); - $x8+= $x13; $x7 = self::leftRotate($x7 ^ $x8, 7); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 16); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 12); + $x2+= $x7; $x13 = self::leftRotate(intval($x13) ^ intval($x2), 8); + $x8+= $x13; $x7 = self::leftRotate(intval($x7) ^ intval($x8), 7); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 16); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 12); - $x3+= $x4; $x14 = self::leftRotate($x14 ^ $x3, 8); - $x9+= $x14; $x4 = self::leftRotate($x4 ^ $x9, 7); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 16); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 12); + $x3+= $x4; $x14 = self::leftRotate(intval($x14) ^ intval($x3), 8); + $x9+= $x14; $x4 = self::leftRotate(intval($x4) ^ intval($x9), 7); // @codingStandardsIgnoreEnd $x0 += $z0; diff --git a/phpseclib/Crypt/Common/SymmetricKey.php b/phpseclib/Crypt/Common/SymmetricKey.php index 63a3af4b..8cd09db1 100644 --- a/phpseclib/Crypt/Common/SymmetricKey.php +++ b/phpseclib/Crypt/Common/SymmetricKey.php @@ -656,7 +656,7 @@ abstract class SymmetricKey $this->mode = $mode; - self::initialize_static_variables(); + static::initialize_static_variables(); } /** @@ -2325,7 +2325,7 @@ abstract class SymmetricKey $reverseMap = array_map('strtolower', self::ENGINE_MAP); $reverseMap = array_flip($reverseMap); } - $engine = strtolower($engine); + $engine = is_string($engine) ? strtolower($engine) : ''; $this->preferredEngine = isset($reverseMap[$engine]) ? $reverseMap[$engine] : self::ENGINE_LIBSODIUM; $this->setEngine(); @@ -3215,9 +3215,14 @@ abstract class SymmetricKey */ protected static function safe_intval($x) { - if (self::$use_reg_intval || is_int($x)) { + if (is_int($x)) { return $x; } + + if (self::$use_reg_intval) { + return PHP_INT_SIZE == 4 && PHP_VERSION_ID >= 80100 ? intval($x) : $x; + } + return (fmod($x, 0x80000000) & 0x7FFFFFFF) | ((fmod(floor($x / 0x80000000), 2) & 1) << 31); } @@ -3230,7 +3235,7 @@ abstract class SymmetricKey protected static function safe_intval_inline() { if (self::$use_reg_intval) { - return '%s'; + return PHP_INT_SIZE == 4 && PHP_VERSION_ID >= 80100 ? 'intval(%s)' : '%s'; } $safeint = '(is_int($temp = %s) ? $temp : (fmod($temp, 0x80000000) & 0x7FFFFFFF) | '; diff --git a/phpseclib/Crypt/DES.php b/phpseclib/Crypt/DES.php index 637e11bc..48977c96 100644 --- a/phpseclib/Crypt/DES.php +++ b/phpseclib/Crypt/DES.php @@ -1237,9 +1237,9 @@ class DES extends BlockCipher $pc2mapd3[($d >> 8) & 0xFF] | $pc2mapd4[ $d & 0xFF]; // Reorder: odd bytes/even bytes. Push the result in key schedule. - $val1 = ( $cp & 0xFF000000) | (($cp << 8) & 0x00FF0000) | + $val1 = ( $cp & intval(0xFF000000)) | (($cp << 8) & 0x00FF0000) | (($dp >> 16) & 0x0000FF00) | (($dp >> 8) & 0x000000FF); - $val2 = (($cp << 8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) | + $val2 = (($cp << 8) & intval(0xFF000000)) | (($cp << 16) & 0x00FF0000) | (($dp >> 8) & 0x0000FF00) | ( $dp & 0x000000FF); $keys[$des_round][self::ENCRYPT][ ] = $val1; $keys[$des_round][self::DECRYPT][$ki - 1] = $val1; diff --git a/phpseclib/Crypt/Rijndael.php b/phpseclib/Crypt/Rijndael.php index 2c069866..cd8b7627 100644 --- a/phpseclib/Crypt/Rijndael.php +++ b/phpseclib/Crypt/Rijndael.php @@ -378,7 +378,7 @@ class Rijndael extends BlockCipher $k = $c[2]; $l = $c[3]; while ($i < $Nb) { - $temp[$i] = ($state[$i] & 0xFF000000) ^ + $temp[$i] = ($state[$i] & intval(0xFF000000)) ^ ($state[$j] & 0x00FF0000) ^ ($state[$k] & 0x0000FF00) ^ ($state[$l] & 0x000000FF) ^ @@ -452,7 +452,7 @@ class Rijndael extends BlockCipher $l = $Nb - $c[3]; while ($i < $Nb) { - $word = ($state[$i] & 0xFF000000) | + $word = ($state[$i] & intval(0xFF000000)) | ($state[$j] & 0x00FF0000) | ($state[$k] & 0x0000FF00) | ($state[$l] & 0x000000FF); @@ -517,14 +517,19 @@ class Rijndael extends BlockCipher { // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field. // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse - static $rcon = [0, - 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, - 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, - 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, - 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, - 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, - 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 - ]; + static $rcon; + + if (!isset($rcon)) { + $rcon = [0, + 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, + 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, + 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, + 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, + 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 + ]; + $rcon = array_map('intval', $rcon); + } if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->key_length === $this->kl['key_length'] && $this->block_size === $this->kl['block_size']) { // already expanded @@ -563,7 +568,7 @@ class Rijndael extends BlockCipher // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine, // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and' // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is. - $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord + $temp = (($temp << 8) & intval(0xFFFFFF00)) | (($temp >> 24) & 0x000000FF); // rotWord $temp = $this->subWord($temp) ^ $rcon[$i / $this->Nk]; } elseif ($this->Nk > 6 && $i % $this->Nk == 4) { $temp = $this->subWord($temp); @@ -692,9 +697,9 @@ class Rijndael extends BlockCipher ]); foreach ($t3 as $t3i) { - $t0[] = (($t3i << 24) & 0xFF000000) | (($t3i >> 8) & 0x00FFFFFF); - $t1[] = (($t3i << 16) & 0xFFFF0000) | (($t3i >> 16) & 0x0000FFFF); - $t2[] = (($t3i << 8) & 0xFFFFFF00) | (($t3i >> 24) & 0x000000FF); + $t0[] = (($t3i << 24) & intval(0xFF000000)) | (($t3i >> 8) & 0x00FFFFFF); + $t1[] = (($t3i << 16) & intval(0xFFFF0000)) | (($t3i >> 16) & 0x0000FFFF); + $t2[] = (($t3i << 8) & intval(0xFFFFFF00)) | (($t3i >> 24) & 0x000000FF); } $tables = [ @@ -775,9 +780,9 @@ class Rijndael extends BlockCipher ]); foreach ($dt3 as $dt3i) { - $dt0[] = (($dt3i << 24) & 0xFF000000) | (($dt3i >> 8) & 0x00FFFFFF); - $dt1[] = (($dt3i << 16) & 0xFFFF0000) | (($dt3i >> 16) & 0x0000FFFF); - $dt2[] = (($dt3i << 8) & 0xFFFFFF00) | (($dt3i >> 24) & 0x000000FF); + $dt0[] = (($dt3i << 24) & intval(0xFF000000)) | (($dt3i >> 8) & 0x00FFFFFF); + $dt1[] = (($dt3i << 16) & intval(0xFFFF0000)) | (($dt3i >> 16) & 0x0000FFFF); + $dt2[] = (($dt3i << 8) & intval(0xFFFFFF00)) | (($dt3i >> 24) & 0x000000FF); }; $tables = [ diff --git a/phpseclib/Crypt/Salsa20.php b/phpseclib/Crypt/Salsa20.php index d3e7a193..0a35f478 100644 --- a/phpseclib/Crypt/Salsa20.php +++ b/phpseclib/Crypt/Salsa20.php @@ -404,11 +404,13 @@ class Salsa20 extends StreamCipher */ protected static function leftRotate($x, $n) { - $r1 = $x << $n; if (PHP_INT_SIZE == 8) { + $r1 = $x << $n; $r1 &= 0xFFFFFFFF; $r2 = ($x & 0xFFFFFFFF) >> (32 - $n); } else { + $x = (int) $x; + $r1 = $x << $n; $r2 = $x >> (32 - $n); $r2 &= (1 << $n) - 1; } diff --git a/phpseclib/Crypt/Twofish.php b/phpseclib/Crypt/Twofish.php index efa47f8c..bf765632 100644 --- a/phpseclib/Crypt/Twofish.php +++ b/phpseclib/Crypt/Twofish.php @@ -367,6 +367,23 @@ class Twofish extends BlockCipher } } + /** + * Initialize Static Variables + */ + protected static function initialize_static_variables() + { + if (is_float(self::$m3[0])) { + self::$m0 = array_map('intval', self::$m0); + self::$m1 = array_map('intval', self::$m1); + self::$m2 = array_map('intval', self::$m2); + self::$m3 = array_map('intval', self::$m3); + self::$q0 = array_map('intval', self::$q0); + self::$q1 = array_map('intval', self::$q1); + } + + parent::initialize_static_variables(); + } + /** * Sets the key length. * diff --git a/tests/Unit/Crypt/EC/KeyTest.php b/tests/Unit/Crypt/EC/KeyTest.php index 2dbf6fcf..0b10bf8d 100644 --- a/tests/Unit/Crypt/EC/KeyTest.php +++ b/tests/Unit/Crypt/EC/KeyTest.php @@ -568,6 +568,10 @@ MIIEDwIBADATBgcqhkjOPQIBBggqhkjOPQMBBwSCA/MwggPvAgEBBIID6P////// public function testOpenSSHEncryptedCreation() { + if (PHP_INT_SIZE == 4) { + self::markTestSkipped('32-bit integers slow OpenSSH encrypted keys down too much'); + } + $key = EC::createKey('Ed25519'); $key = $key->withPassword('test')->toString('OpenSSH'); diff --git a/tests/Unit/Crypt/RSA/LoadKeyTest.php b/tests/Unit/Crypt/RSA/LoadKeyTest.php index dc250e38..48980331 100644 --- a/tests/Unit/Crypt/RSA/LoadKeyTest.php +++ b/tests/Unit/Crypt/RSA/LoadKeyTest.php @@ -1233,6 +1233,10 @@ Private-MAC: d26baf87446604974287b682ed9e0c00ce54e460e1cb719953a81291147b3c59 public function testOpenSSHEncrypted() { + if (PHP_INT_SIZE == 4) { + self::markTestSkipped('32-bit integers slow OpenSSH encrypted keys down too much'); + } + $key = '-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBN2Ff3Kw SIOWyzRiboPRIhAAAAEAAAAAEAAAGXAAAAB3NzaC1yc2EAAAADAQABAAABgQCpxMxDEG0S