/** * Initializes AES instance using either provided $options or session values * @param array $options Array of options, containing 'key' and 'iv' values * @return mixed|void * @throws Exception */ public function initSymmetric($options = array()) { if (empty($options) && Session::has('aes_key') && Session::has('aes_iv')) { $options = array('key' => Session::get('aes_key'), 'iv' => Session::get('aes_iv')); } if (!(isset($options['key']) && isset($options['iv']))) { \Log::error("Either key or iv not set"); throw new \Exception("Either key or iv not set"); } Session::put('aes_key', $options['key']); Session::put('aes_iv', $options['iv']); $aes = new \Crypt_AES(CRYPT_AES_MODE_CBC); $aes->setKeyLength(256); $aes->setKey(Base64::UrlDecode($options['key'])); $aes->setIV(Base64::UrlDecode($options['iv'])); $aes->enablePadding(); $this->aes = $aes; $this->isAesInitialized = true; }
function SendEncryptedResponse($message) { $aes = new Crypt_AES(CRYPT_AES_MODE_CBC); $aes->setKeyLength(256); $aes->setKey(Base64UrlDecode($_SESSION['key'])); $aes->setIV(Base64UrlDecode($_SESSION['iv'])); $aes->enablePadding(); // This is PKCS echo Base64UrlEncode($aes->encrypt($message)); exit; }