3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** Aes encryption */ class AES { const M_CBC = 'cbc'; const M_CFB = 'cfb'; const M_ECB = 'ecb'; const M_NOFB = 'nofb'; const M_OFB = 'ofb'; const M_STREAM = 'stream'; protected $key; protected $cipher; protected $data; protected $mode; protected $IV; /** * * @param type $data * @param type $key * @param type $blockSize * @param type $mode */ function __construct($data = null, $key = null, $blockSize = null, $mode = null) { $this->setData($data); $this->setKey($key); $this->setBlockSize($blockSize); $this->setMode($mode); $this->setIV(""); } /** * * @param type $data */ public function setData($data) { $this->data = $data; } /** * * @param type $key */ public function setKey($key) { $this->key = $key; } /** * * @param type $blockSize */ public function setBlockSize($blockSize) { switch ($blockSize) { case 128: $this->cipher = MCRYPT_RIJNDAEL_128; break; case 192: $this->cipher = MCRYPT_RIJNDAEL_192; break; case 256: $this->cipher = MCRYPT_RIJNDAEL_256; break; } } /** * * @param type $mode */ public function setMode($mode) { switch ($mode) { case AES::M_CBC: $this->mode = MCRYPT_MODE_CBC; break; case AES::M_CFB: $this->mode = MCRYPT_MODE_CFB; break; case AES::M_ECB: $this->mode = MCRYPT_MODE_ECB; break; case AES::M_NOFB: $this->mode = MCRYPT_MODE_NOFB; break; case AES::M_OFB: $this->mode = MCRYPT_MODE_OFB; break; case AES::M_STREAM: $this->mode = MCRYPT_MODE_STREAM; break; default: $this->mode = MCRYPT_MODE_ECB; break; } } /** * * @return boolean */ public function validateParams() { if ($this->data != null && $this->key != null && $this->cipher != null) { return true; } else { return FALSE; } } public function setIV($IV) { $this->IV = $IV; } protected function getIV() { if ($this->IV == "") { $this->IV = mcrypt_create_iv(mcrypt_get_iv_size($this->cipher, $this->mode), MCRYPT_RAND); } return $this->IV; } /** * @return type * @throws Exception */ public function encrypt() { if ($this->validateParams()) { return trim(base64_encode( mcrypt_encrypt( $this->cipher, $this->key, $this->data, $this->mode, $this->getIV()))); } else { throw new Exception('Invlid params!'); } } /** * * @return type * @throws Exception */ public function decrypt() { if ($this->validateParams()) { return trim(mcrypt_decrypt( $this->cipher, $this->key, base64_decode($this->data), $this->mode, $this->getIV())); } else { throw new Exception('Invlid params!'); } } } function encode($text) { return bin2hex($text); } function decode($base16){ return pack("H*", $base16); } function encrypt($key, $link){ $cp = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', ''); @mcrypt_generic_init($cp, $key, $key); $enc = mcrypt_generic($cp, $link); mcrypt_generic_deinit($cp); mcrypt_module_close($cp); return $enc; } $key="31323334353637383930393837363534"; $link="62QTUQPXD5PTTmyJPr6wh/b7fdQR94C+MEwg1XEvXI2nV4Lg38yp6AKLW6/ZWW5Z8c+CjfCWZkJoBkpl/p2SS7rp4GAuUR07OKu9rDp/2yoX14y/zx13w62yt6DIRvqWpk/Z4B1EFgSaky6UIHHefubrpnJtAmdq4hhtZXbrNvZvxn6DG74ZJC4B2Qwp3PM1EYz7PiK1MQv2p6dcLdi5J1seJUp9oICdKKYF/hDnNXC6UQSOKz1QDD8oWd4glsp1WGOiR7XXat4llB3g+rZV2suupoR6jpFDAv5DK3GUjEZGUUAgnhNMbHvRVFfce80LOQn7Lh+TUvrXqfE45fzgJcf6qswWHdFCtF8mOUQvjsr67wkkBTn4shNG1bWYF5oXbBOArt+R9dk5IluD2mDGiOj3FymwPQFd+nrHFYIsnSMHs3VC7jpa8nVHo2zYajeXc43dgMiH4mZwfYica1myoKqAfnCpokhaSaOtbE0SKOdhJw2Hw90IChEwvlWFoZmeW1MlA3W9CYIGdR4Xwxl7TXNgw2w9EXwXc0N8WQV1bK7AUB3F722HJMgiLCqjs9UzSTk6yhBs4LNdKnW+F44iQEV7vFibvGVbwanjypxX+E4aydaPPFA3TCpZY+pEo2IY3mfmnH8oyswlp55SvIvLBU4IHNNdfv8ONZzUiasaQSZxQ0K6aVm8nbjUBZEfCX3h5N1h047Vt0sVSI19Bsv9mDzIgXc1jnDREvDdhQM97lzzctm+fyjAPnXmScuqPnhn"; $aes = new AES($link, encode($key), 128, AES::M_CBC); $dec = $aes->decrypt(); echo "Decryption: ".$dec."\r\n"; //echo base64_encode(encrypt(encode($key), $link));

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0000.01916.75
8.3.50.0110.00416.51
8.3.40.0110.00418.84
8.3.30.0150.00018.79
8.3.20.0000.00820.29
8.3.10.0080.00021.80
8.3.00.0040.00419.50
8.2.180.0210.00017.00
8.2.170.0040.01122.96
8.2.160.0110.00420.39
8.2.150.0040.00424.18
8.2.140.0040.00424.66
8.2.130.0040.00421.04
8.2.120.0000.00826.35
8.2.110.0100.01022.07
8.2.100.0000.01217.84
8.2.90.0040.00418.02
8.2.80.0000.01017.97
8.2.70.0000.00817.93
8.2.60.0030.00518.16
8.2.50.0000.00818.10
8.2.40.0000.00920.55
8.2.30.0050.00320.91
8.2.20.0040.00418.07
8.2.10.0000.00818.22
8.2.00.0080.00018.02
8.1.280.0040.01125.92
8.1.270.0000.00723.92
8.1.260.0050.00226.35
8.1.250.0000.00728.09
8.1.240.0070.01422.07
8.1.230.0090.00320.85
8.1.220.0000.00921.09
8.1.210.0060.00318.77
8.1.200.0030.00717.35
8.1.190.0040.00417.35
8.1.180.0000.00818.10
8.1.170.0080.00018.64
8.1.160.0040.00419.06
8.1.150.0090.00020.63
8.1.140.0000.00719.63
8.1.130.0070.00318.93
8.1.120.0020.00517.59
8.1.110.0030.00617.50
8.1.100.0040.00417.44
8.1.90.0110.00017.50
8.1.80.0020.00517.52
8.1.70.0030.00317.50
8.1.60.0040.00417.63
8.1.50.0040.00417.46
8.1.40.0030.00617.54
8.1.30.0000.00817.59
8.1.20.0040.00417.70
8.1.10.0050.00517.50
8.1.00.0000.00817.54
8.0.300.0030.00621.55
8.0.290.0040.00416.88
8.0.280.0030.00518.49
8.0.270.0030.00317.30
8.0.260.0060.00316.96
8.0.250.0070.00017.10
8.0.240.0000.00717.06
8.0.230.0000.00716.95
8.0.220.0040.00417.06
8.0.210.0000.00716.93
8.0.200.0000.00716.95
8.0.190.0060.00617.05
8.0.180.0050.00317.02
8.0.170.0040.00417.06
8.0.160.0000.00716.97
8.0.150.0050.00216.89
8.0.140.0060.00316.93
8.0.130.0060.00013.43
8.0.120.0040.00416.99
8.0.110.0040.00417.09
8.0.100.0000.00716.88
8.0.90.0030.00517.01
8.0.80.0030.01916.94
8.0.70.0000.00817.06
8.0.60.0050.00316.88
8.0.50.0040.00416.80
8.0.30.0100.00817.36
8.0.20.0110.00817.40
8.0.10.0000.00717.13
8.0.00.0150.00916.84
7.4.330.0020.00215.55
7.4.320.0000.00716.56
7.4.300.0070.00016.58
7.4.290.0040.00416.71
7.4.280.0000.00716.66
7.4.270.0000.00716.57
7.4.260.0060.00013.37
7.4.250.0040.00416.63
7.4.240.0050.00216.67
7.4.230.0030.00516.57
7.4.220.0130.00316.64
7.4.210.0060.01316.56
7.4.200.0030.00316.65
7.4.160.0050.01216.63
7.4.150.0070.01017.40
7.4.140.0110.01117.86
7.4.130.0130.01316.57
7.4.120.0100.01016.61
7.4.110.0060.01416.60
7.4.100.0120.00616.52
7.4.90.0000.01716.53
7.4.80.0070.01119.39
7.4.70.0100.00716.68
7.4.60.0060.00916.68
7.4.50.0030.01216.68
7.4.40.0090.00816.50
7.4.30.0100.00716.74
7.4.00.0070.00714.87
7.3.330.0000.00613.39
7.3.320.0030.00313.26
7.3.310.0000.00716.50
7.3.300.0070.00016.39
7.3.290.0090.00716.40
7.3.280.0080.00816.42
7.3.270.0110.00517.40
7.3.260.0090.01016.63
7.3.250.0100.00716.45
7.3.240.0070.01216.61
7.3.230.0180.00616.49
7.3.210.0170.00716.71
7.3.200.0030.01516.48
7.3.190.0070.01016.40
7.3.180.0060.00916.41
7.3.170.0100.00716.52
7.3.160.0150.00316.69
7.3.120.0000.01014.53
7.3.110.0070.01014.87
7.3.100.0080.00814.95
7.3.90.0070.00714.95
7.3.80.0120.00614.91
7.3.70.0120.00314.91
7.3.60.0070.01115.00
7.3.50.0030.01014.79
7.3.40.0070.00714.71
7.3.30.0030.01014.99
7.3.20.0000.01016.82
7.3.10.0170.00716.52
7.3.00.0080.00516.57
7.2.330.0090.00916.94
7.2.320.0000.01716.61
7.2.310.0180.00316.57
7.2.300.0150.00316.39
7.2.290.0090.00916.91
7.2.250.0070.01114.85
7.2.240.0040.01215.19
7.2.230.0050.01314.93
7.2.220.0120.00615.23
7.2.210.0040.01115.01
7.2.200.0060.00915.19
7.2.190.0070.00315.16
7.2.180.0090.00614.98
7.2.170.0060.00615.09
7.2.130.0270.01116.34
7.2.120.0280.00416.41
7.2.110.0210.00416.55
7.2.100.0280.00716.58
7.2.90.0300.00716.59
7.2.80.0150.01516.61
7.2.70.0310.00316.85
7.2.60.0230.00616.52
7.2.50.0810.00717.04
7.2.40.0780.00316.69
7.2.30.0380.00616.46
7.2.20.0390.00016.61
7.2.10.0590.00417.03
7.2.00.0220.01418.07
7.1.330.0090.00615.79
7.1.320.0030.00615.84
7.1.310.0070.01115.55
7.1.300.0080.00315.62
7.1.290.0090.00615.73
7.1.280.0000.01315.50
7.1.270.0040.01115.87
7.1.260.0040.01115.57
7.1.250.0300.00015.21
7.1.200.0030.00915.68
7.1.100.0030.00917.84
7.1.70.0070.00617.16
7.1.60.0240.00334.91
7.1.50.0120.01234.65
7.1.40.0230.01334.54
7.1.30.0240.01034.26
7.1.20.0220.00434.20
7.1.10.0030.01016.76
7.1.00.0090.00916.71
7.0.200.0090.00316.54
7.0.190.0000.01216.60
7.0.180.0030.01416.25
7.0.170.0040.00816.16
7.0.160.0000.01316.41
7.0.150.0060.00616.16
7.0.140.0060.00616.28
7.0.130.0070.00716.46
7.0.120.0030.01016.59
7.0.110.0000.01816.50
7.0.100.0100.00716.46
7.0.90.0060.00616.26
7.0.80.0110.00316.32
7.0.70.0000.01216.23
7.0.60.0090.00316.14
7.0.50.0030.00916.43
7.0.40.0030.00916.66
7.0.30.0080.00416.59
7.0.20.0030.00916.30
7.0.10.0040.00816.14
7.0.00.0060.00616.31

preferences:
58.5 ms | 401 KiB | 5 Q