* setKey('abcdefghijklmnop'); * * $size = 10 * 1024; * $plaintext = ''; * for ($i = 0; $i < $size; $i++) { * $plaintext.= 'a'; * } * * echo $aes->decrypt($aes->encrypt($plaintext)); * ?> * * * @author Jim Wigginton * @copyright 2008 Jim Wigginton * @license http://www.opensource.org/licenses/mit-license.html MIT License * @link http://phpseclib.sourceforge.net */ declare(strict_types=1); namespace phpseclib3\Crypt; use phpseclib3\Exception\BadMethodCallException; use phpseclib3\Exception\LengthException; /** * Pure-PHP implementation of AES. * * @author Jim Wigginton */ class AES extends Rijndael { /** * Dummy function * * Since \phpseclib3\Crypt\AES extends \phpseclib3\Crypt\Rijndael, this function is, technically, available, but it doesn't do anything. * * @throws BadMethodCallException anytime it's called * @see \phpseclib3\Crypt\Rijndael::setBlockLength() */ public function setBlockLength(int $length): void { throw new BadMethodCallException('The block length cannot be set for AES.'); } /** * Sets the key length * * Valid key lengths are 128, 192, and 256. Set the link to bool(false) to disable a fixed key length * * @throws LengthException if the key length isn't supported * @see \phpseclib3\Crypt\Rijndael:setKeyLength() */ public function setKeyLength(int $length): void { switch ($length) { case 128: case 192: case 256: break; default: throw new LengthException('Key of size ' . $length . ' not supported by this algorithm. Only keys of sizes 128, 192 or 256 supported'); } parent::setKeyLength($length); } /** * Sets the key. * * Rijndael supports five different key lengths, AES only supports three. * * @throws LengthException if the key length isn't supported * @see \phpseclib3\Crypt\Rijndael:setKey() * @see setKeyLength() */ public function setKey(string $key): void { switch (strlen($key)) { case 16: case 24: case 32: break; default: throw new LengthException('Key of size ' . strlen($key) . ' not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported'); } parent::setKey($key); } }