/** * @param null|string $input * @return string */ public function generateKey($input = NULL) { $text = $input === NULL ? $this->username . ';' . date('d/m/Y H:i:s') . ';' . $this->ip : $input; $cipher = new \Crypt_Rijndael(); $cipher->setKeyLength(256); $cipher->setBlockLength(128); $cipher->setKey(base64_decode($this->key)); $cipher->setIV(base64_decode($this->iv)); return base64_encode($cipher->encrypt($text)); }
/** * Decrypt the ciphertext * @param string $cipherText * @return object \stdClass Unserialized token */ public function decrypt($cipherText) { // Decryption: prefer mcrypt, if available (since it can decrypt data encrypted by either mcrypt or phpseclib) $cipherText = base64_decode($cipherText); $iv = substr($cipherText, 0, self::IV_SIZE); $cipherText = substr($cipherText, self::IV_SIZE); if (function_exists('mcrypt_decrypt')) { $token = @mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $cipherText, MCRYPT_MODE_CBC, $iv); } else { global $updraftplus; $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); $rijndael = new Crypt_Rijndael(); $rijndael->setKey($this->key); $rijndael->setIV($iv); $token = $rijndael->decrypt($cipherText); } return $token; }
/** * Sets the initialization vector. (optional) * * SetIV is not required when CRYPT_RIJNDAEL_MODE_ECB is being used. If not explictly set, it'll be assumed * to be all zero's. * * @access public * @param String $iv */ function setIV($iv) { parent::setIV($iv); if (CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT) { $this->changed = true; } }
function osc_decrypt_alert($string) { $key = hash("sha256", osc_get_alert_private_key(), true); if(function_exists('mcrypt_module_open')) { $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, ''); $cipherText = ''; if (mcrypt_generic_init($cipher, $key, $key) != -1) { $cipherText = mdecrypt_generic($cipher, $string); mcrypt_generic_deinit($cipher); } return trim(substr($cipherText, 32)); }; require_once LIB_PATH . 'phpseclib/Crypt/Rijndael.php'; $cipher = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CBC); $cipher->disablePadding(); $cipher->setBlockLength(256); $cipher->setKey($key); $cipher->setIV($key); return trim(substr($cipher->decrypt($string), 32)); }