diff --git a/aes256.php b/aes256.php index 660fb333..3c72c925 100644 --- a/aes256.php +++ b/aes256.php @@ -1,118 +1,119 @@ key = $key; - $this->iv = $iv; - $this->cipherText = $cipherText; - $this->plainText = $plainText; - $this->debug = $debug; -} -public function IGE256Decrypt() -{ + public function __construct($key, $iv, $cipherText = null, $plainText = null, $debug = false) + { + $this->key = $key; + $this->iv = $iv; + $this->cipherText = $cipherText; + $this->plainText = $plainText; + $this->debug = $debug; + } -$key = $this->key; -$message = $this->cipherText; -$blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); + public function IGE256Decrypt() + { + $key = $this->key; + $message = $this->cipherText; + $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); -$xPrev = substr($this->iv, 0, $blockSize); -$yPrev = substr($this->iv, $blockSize, strlen($this->iv)); + $xPrev = substr($this->iv, 0, $blockSize); + $yPrev = substr($this->iv, $blockSize, strlen($this->iv)); -$decrypted = ''; + $decrypted = ''; -for ($i=0; $i < strlen($message); $i += $blockSize) -{ - $x = substr($message, $i, $blockSize); - $this->debugLog("x: " . _c($x) . "\n"); + for ($i = 0; $i < strlen($message); $i += $blockSize) { + $x = substr($message, $i, $blockSize); + $this->debugLog('x: '._c($x)."\n"); - $yXOR = $this->exor($x, $yPrev); - $this->debugLog("yPrev: " . _c($yPrev) . "\n"); - $this->debugLog("yXOR: " . _c($yXOR) . "\n"); - $yFinal = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $yXOR, MCRYPT_MODE_ECB); -$yFinal = str_pad($yFinal, strlen($xPrev), "\x00"); -$this->debugLog("yFinal: " . _c($yFinal) . "\n"); + $yXOR = $this->exor($x, $yPrev); + $this->debugLog('yPrev: '._c($yPrev)."\n"); + $this->debugLog('yXOR: '._c($yXOR)."\n"); + $yFinal = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $yXOR, MCRYPT_MODE_ECB); + $yFinal = str_pad($yFinal, strlen($xPrev), "\x00"); + $this->debugLog('yFinal: '._c($yFinal)."\n"); -$y = $this->exor($yFinal, $xPrev); -$this->debugLog("xPrev: " . _c($xPrev) . "\n"); -$this->debugLog("y: " . _c($y) . "\n"); + $y = $this->exor($yFinal, $xPrev); + $this->debugLog('xPrev: '._c($xPrev)."\n"); + $this->debugLog('y: '._c($y)."\n"); -$xPrev = $x; -$yPrev = $y; -$decrypted .= $y; + $xPrev = $x; + $yPrev = $y; + $decrypted .= $y; -$this->debugLog("Currently Decrypted: "._c($decrypted)."\n\n"); -} -return $decrypted; -} + $this->debugLog('Currently Decrypted: '._c($decrypted)."\n\n"); + } -public function IGE256Encrypt() -{ -$key = $this->key; -$message = $this->plainText; -$blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); + return $decrypted; + } -$xPrev = substr($this->iv, $blockSize, strlen($this->iv)); -$yPrev = substr($this->iv, 0, $blockSize); + public function IGE256Encrypt() + { + $key = $this->key; + $message = $this->plainText; + $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); -$encrypted = ''; + $xPrev = substr($this->iv, $blockSize, strlen($this->iv)); + $yPrev = substr($this->iv, 0, $blockSize); -for ($i=0; $i < strlen($message); $i += $blockSize) -{ + $encrypted = ''; -$x = substr($message, $i, $blockSize); -$this->debugLog("x: " . _c($x) . "\n"); + for ($i = 0; $i < strlen($message); $i += $blockSize) { + $x = substr($message, $i, $blockSize); + $this->debugLog('x: '._c($x)."\n"); -$yXOR = $this->exor($x, $yPrev); -$this->debugLog("yPrev: " . _c($yPrev) . "\n"); -$this->debugLog("yXOR: " . _c($yXOR) . "\n"); -$yFinal = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $yXOR, MCRYPT_MODE_ECB); -$yFinal = str_pad($yFinal, strlen($xPrev), "\x00"); -$this->debugLog("yFinal: " . _c($yFinal) . "\n"); -$y = $this->exor($yFinal, $xPrev); -$this->debugLog("xPrev: " . _c($xPrev) . "\n"); -$this->debugLog("y: " . _c($y) . "\n"); + $yXOR = $this->exor($x, $yPrev); + $this->debugLog('yPrev: '._c($yPrev)."\n"); + $this->debugLog('yXOR: '._c($yXOR)."\n"); + $yFinal = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $yXOR, MCRYPT_MODE_ECB); + $yFinal = str_pad($yFinal, strlen($xPrev), "\x00"); + $this->debugLog('yFinal: '._c($yFinal)."\n"); + $y = $this->exor($yFinal, $xPrev); + $this->debugLog('xPrev: '._c($xPrev)."\n"); + $this->debugLog('y: '._c($y)."\n"); -$xPrev = $x; -$yPrev = $y; + $xPrev = $x; + $yPrev = $y; -$encrypted .= $y; -$this->debugLog("Currently encrypted: "._c($encrypted)."\n\n"); -} -return $encrypted; -} + $encrypted .= $y; + $this->debugLog('Currently encrypted: '._c($encrypted)."\n\n"); + } -public function debugLog($message) -{ - if ($this->debug) - echo $message; -} + return $encrypted; + } -public function exor($array1, $array2) -{ - $len = (strlen($array1) <= strlen($array2)) ? strlen($array2) : strlen($array1); + public function debugLog($message) + { + if ($this->debug) { + echo $message; + } + } -$array1 = str_pad($array1, $len, "\x00"); -$array2 = str_pad($array2, $len, "\x00"); + public function exor($array1, $array2) + { + $len = (strlen($array1) <= strlen($array2)) ? strlen($array2) : strlen($array1); -$res = ''; -for ($i=0; $i < $len; $i++) -{ - $res .= $array1[$i] ^ $array2[$i]; -} -return $res; -} + $array1 = str_pad($array1, $len, "\x00"); + $array2 = str_pad($array2, $len, "\x00"); -function _c($binary) { - return sprintf("[%s]", chunk_split(bin2hex($binary), 4," ") + $res = ''; + for ($i = 0; $i < $len; $i++) { + $res .= $array1[$i] ^ $array2[$i]; + } + + return $res; + } + + public function _c($binary) + { + return sprintf('[%s]', chunk_split(bin2hex($binary), 4, ' ') ); -} - + } }