* @version 1.0.5 * @license http://opensource.org/licenses/lgpl-3.0.html The GNU Lesser General Public License * @package AES */ /** * @see AES */ require_once('AES.class.php'); /** * Text cipher class * This class is using AES crypt algoritm * @author Marcin F. Wiśniowski * @version 1.0.0 * @license http://opensource.org/licenses/lgpl-3.0.html The GNU Lesser General Public License */ class AESCipher { /** @var object An AES cipher object. */ private $_cipher; /** @var int Key strenght */ private $_strenght; /** @const int Maximum number of bytes in encryption chunk */ const BYTE_LIMIT = 16; /** * Class constructor * It initialize cipher object with proper key lenght. By default it uses 128bit. * @param int Key strength, Takes AES Class const values * @see AES::AES128 */ public function __construct($strength=AES::AES128) { $this->_cipher = new AES($strength); $this->_strenght = $strength; } /** * Generates Hexadecimal key from inserted pass phrase * @param string Pass phrase * @return string Hexadecimal key */ private function _generateKey($password) { switch ($this->_strenght) { case AES::AES256: return md5($password).md5($password.'1'); case AES::AES192: return sha1($password); case AES::AES128: default: return md5($password); } } /** * Encrypt method * @param string input string * @param string Pass phrase * @return string Cryptext */ public function encrypt($content, $password) { $key = $this->_generateKey($password); $input = str_split($this->_cipher->stringToHex($content), self::BYTE_LIMIT*2); $output = ''; foreach ($input as $chunk) $output .= $this->_cipher->encrypt($chunk, $key); return $this->_cipher->hexToString($output); } /** * Decrypt method * @param string Cryptext * @param string Pass phrase * @return string Decoded message */ public function decrypt($cryptext, $password) { $key = $this->_generateKey($password); $input = str_split($this->_cipher->stringToHex($cryptext), self::BYTE_LIMIT*2); $output = ''; foreach ($input as $chunk) $output .= $this->_cipher->decrypt($chunk, $key); return $this->_cipher->hexToString($output); } } ?>