PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / trunk
JetBackup – Backup, Restore & Migrate vtrunk
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt / AES.php
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt Last commit date
Common 1 year ago DH 1 year ago DSA 1 year ago EC 1 year ago RSA 1 year ago .htaccess 1 year ago AES.php 1 year ago Blowfish.php 1 year ago ChaCha20.php 1 year ago DES.php 1 year ago DH.php 1 year ago DSA.php 1 year ago EC.php 1 year ago Hash.php 1 year ago PublicKeyLoader.php 1 year ago RC2.php 1 year ago RC4.php 1 year ago RSA.php 1 year ago Random.php 1 year ago Rijndael.php 1 year ago Salsa20.php 1 year ago TripleDES.php 1 year ago Twofish.php 1 year ago index.html 1 year ago web.config 1 year ago
AES.php
119 lines
1 <?php
2
3 /**
4 * Pure-PHP implementation of AES.
5 *
6 * Uses OpenSSL, if available/possible, and an internal implementation, otherwise
7 *
8 * PHP version 5
9 *
10 * NOTE: Since AES.php is (for compatibility and phpseclib-historical reasons) virtually
11 * just a wrapper to Rijndael.php you may consider using Rijndael.php instead of
12 * to save one include_once().
13 *
14 * If {@link self::setKeyLength() setKeyLength()} isn't called, it'll be calculated from
15 * {@link self::setKey() setKey()}. ie. if the key is 128-bits, the key length will be 128-bits. If it's 136-bits
16 * it'll be null-padded to 192-bits and 192 bits will be the key length until {@link self::setKey() setKey()}
17 * is called, again, at which point, it'll be recalculated.
18 *
19 * Since \phpseclib3\Crypt\AES extends \phpseclib3\Crypt\Rijndael, some functions are available to be called that, in the context of AES, don't
20 * make a whole lot of sense. {@link self::setBlockLength() setBlockLength()}, for instance. Calling that function,
21 * however possible, won't do anything (AES has a fixed block length whereas Rijndael has a variable one).
22 *
23 * Here's a short example of how to use this library:
24 * <code>
25 * <?php
26 * include 'vendor/autoload.php';
27 *
28 * $aes = new \phpseclib3\Crypt\AES('ctr');
29 *
30 * $aes->setKey('abcdefghijklmnop');
31 *
32 * $size = 10 * 1024;
33 * $plaintext = '';
34 * for ($i = 0; $i < $size; $i++) {
35 * $plaintext.= 'a';
36 * }
37 *
38 * echo $aes->decrypt($aes->encrypt($plaintext));
39 * ?>
40 * </code>
41 *
42 * @author Jim Wigginton <terrafrost@php.net>
43 * @copyright 2008 Jim Wigginton
44 * @license http://www.opensource.org/licenses/mit-license.html MIT License
45 * @link http://phpseclib.sourceforge.net
46 */
47
48 declare(strict_types=1);
49
50 namespace phpseclib3\Crypt;
51
52 use phpseclib3\Exception\BadMethodCallException;
53 use phpseclib3\Exception\LengthException;
54
55 /**
56 * Pure-PHP implementation of AES.
57 *
58 * @author Jim Wigginton <terrafrost@php.net>
59 */
60 class AES extends Rijndael
61 {
62 /**
63 * Dummy function
64 *
65 * Since \phpseclib3\Crypt\AES extends \phpseclib3\Crypt\Rijndael, this function is, technically, available, but it doesn't do anything.
66 *
67 * @throws BadMethodCallException anytime it's called
68 * @see \phpseclib3\Crypt\Rijndael::setBlockLength()
69 */
70 public function setBlockLength(int $length): void
71 {
72 throw new BadMethodCallException('The block length cannot be set for AES.');
73 }
74
75 /**
76 * Sets the key length
77 *
78 * Valid key lengths are 128, 192, and 256. Set the link to bool(false) to disable a fixed key length
79 *
80 * @throws LengthException if the key length isn't supported
81 * @see \phpseclib3\Crypt\Rijndael:setKeyLength()
82 */
83 public function setKeyLength(int $length): void
84 {
85 switch ($length) {
86 case 128:
87 case 192:
88 case 256:
89 break;
90 default:
91 throw new LengthException('Key of size ' . $length . ' not supported by this algorithm. Only keys of sizes 128, 192 or 256 supported');
92 }
93 parent::setKeyLength($length);
94 }
95
96 /**
97 * Sets the key.
98 *
99 * Rijndael supports five different key lengths, AES only supports three.
100 *
101 * @throws LengthException if the key length isn't supported
102 * @see \phpseclib3\Crypt\Rijndael:setKey()
103 * @see setKeyLength()
104 */
105 public function setKey(string $key): void
106 {
107 switch (strlen($key)) {
108 case 16:
109 case 24:
110 case 32:
111 break;
112 default:
113 throw new LengthException('Key of size ' . strlen($key) . ' not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported');
114 }
115
116 parent::setKey($key);
117 }
118 }
119