3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Define a 32-byte (64 character) hexadecimal encryption key // Note: The same encryption key used to encrypt the data must be used to decrypt the data define('ENCRYPTION_KEY', 'zEFnGVANrtEUTMLVyBusu4pqpHjqhn3X+cCtepGKg89VgIi6KugA+hITeeKIpnQIQM8UZbUkRpuCe/d8Rf5HFQJSawpeHoUg5NtcGam0eeTw+1bnFPT3dcPNB8IekPBDyXTyV44s3yaYMUAXZWthWHEVDFfKSjfTpPmQkB8fp6Go/qytRtiP3LyYmofhOOOV8APh0Pv34VPjCtxcJUpqIw=='); // Encrypt Function function mc_encrypt($encrypt, $key){ $encrypt = serialize($encrypt); $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); $key = pack('H*', $key); $mac = hash_hmac('sha256', $encrypt, substr(bin2hex($key), -32)); $passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $encrypt.$mac, MCRYPT_MODE_CBC, $iv); $encoded = base64_encode($passcrypt).'|'.base64_encode($iv); return $encoded; } // Decrypt Function function mc_decrypt($decrypt, $key){ $decrypt = explode('|', $decrypt.'|'); $decoded = base64_decode($decrypt[0]); $iv = base64_decode($decrypt[1]); if(strlen($iv)!==mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)){ return false; } $key = pack('H*', $key); $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_CBC, $iv)); $mac = substr($decrypted, -64); $decrypted = substr($decrypted, 0, -64); $calcmac = hash_hmac('sha256', $decrypted, substr(bin2hex($key), -32)); if($calcmac!==$mac){ return false; } $decrypted = unserialize($decrypted); return $decrypted; } echo '<h1>Rijndael 256-bit CBC Encryption Function</h1>'; $data = 'G+glEae6W/1XjA7vRm21nNyEco/c+J2TdR0Qp8dcjPK/ZEJpSw8lYr3+NDY3VpFZK/PMVHnhLmbzHIY7GAR1bVcy3Ix3D2Q5cVi8F6bmY='; $encrypted_data = mc_encrypt($data, ENCRYPTION_KEY); echo '<h2>Example #1: String Data</h2>'; echo 'Data to be Encrypted: ' . $data . '<br/>'; echo 'Encrypted Data: ' . $encrypted_data . '<br/>'; echo 'Decrypted Data: ' . mc_decrypt($encrypted_data, ENCRYPTION_KEY) . '</br>'; $data = array(1, 5, 8, 9, 22, 10, 61); $encrypted_data = mc_encrypt($data, ENCRYPTION_KEY); echo '<h2>Example #2: Non-String Data</h2>'; echo 'Data to be Encrypted: <pre>'; print_r($data); echo '</pre><br/>'; echo 'Encrypted Data: ' . $encrypted_data . '<br/>'; echo 'Decrypted Data: <pre>'; print_r(mc_decrypt($encrypted_data, ENCRYPTION_KEY)); echo '</pre>'; ?>

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.5.00.0160.01120.11
8.4.150.0020.00114.05
8.4.140.0130.00917.88
8.4.130.0140.00717.88
8.4.120.0090.00720.21
8.4.110.0260.00719.24
8.4.100.0150.00518.36
8.4.90.0100.00519.32
8.4.80.0150.00718.28
8.4.70.0140.00818.13
8.4.60.0170.00318.43
8.4.50.0200.00718.22
8.4.40.0160.00717.79
8.4.30.0190.00717.72
8.4.20.0210.00218.80
8.4.10.0110.00618.73
8.3.280.0140.00618.50
8.3.270.0130.00616.79
8.3.260.0080.00616.59
8.3.250.0070.00717.78
8.3.240.0190.00516.56
8.3.230.0170.00416.55
8.3.220.0200.00717.83
8.3.210.0190.00517.64
8.3.200.0240.00516.57
8.3.190.0200.01016.92
8.3.180.0110.01016.85
8.3.170.0250.00717.76
8.3.160.0260.00816.86
8.3.150.0230.01317.45
8.3.140.0120.00516.73
8.3.130.0170.00417.50
8.3.120.0180.00718.58
8.3.110.0210.00718.70
8.3.100.0220.00820.43
8.3.90.0160.00321.81
8.3.80.0130.00318.11
8.3.70.0230.00816.62
8.3.60.0170.00816.39
8.3.50.0230.00517.11
8.3.40.0250.00918.23
8.3.30.0220.01018.12
8.3.20.0130.00118.90
8.3.10.0110.00220.61
8.3.00.0200.00519.57
8.2.290.0160.00718.68
8.2.280.0180.01117.63
8.2.270.0200.01116.73
8.2.260.0230.00616.87
8.2.250.0190.00616.76
8.2.240.0200.00516.68
8.2.230.0250.00819.43
8.2.220.0150.00327.17
8.2.210.0100.00421.82
8.2.200.0150.00217.66
8.2.190.0170.00616.76
8.2.180.0210.01017.62
8.2.170.0210.01018.46
8.2.160.0250.00420.40
8.2.150.0220.00321.65
8.2.140.0210.00521.10
8.2.130.0200.00619.02
8.2.120.0200.00622.03
8.2.110.0200.00719.32
8.2.100.0120.00917.92
8.2.90.0100.01018.33
8.2.80.0200.00417.74
8.2.70.0080.00617.66
8.2.60.0090.00417.75
8.2.50.0110.00517.69
8.2.40.0080.00619.13
8.2.30.0190.00818.36
8.2.20.0190.00717.76
8.2.10.0170.00417.89
8.2.00.0110.00217.85
8.1.330.0180.00919.16
8.1.320.0230.00816.22
8.1.310.0160.00916.36
8.1.300.0190.00516.48
8.1.290.0200.00423.37
8.1.280.0150.00721.02
8.1.270.0100.00820.58
8.1.260.0130.00521.90
8.1.250.0150.00822.67
8.1.240.0180.00819.73
8.1.230.0190.00518.81
8.1.220.0150.00917.60
8.1.210.0180.00717.99
8.1.200.0160.00817.48
8.1.190.0170.00517.07
8.1.180.0140.00917.54
8.1.170.0180.00617.83
8.1.160.0180.00717.91
8.1.150.0090.00418.68
8.1.140.0150.00718.17
8.1.130.0150.00717.46
8.1.120.0180.00417.30
8.1.110.0140.00917.30
8.1.100.0170.00517.28
8.1.90.0170.00617.39
8.1.80.0150.00817.37
8.1.70.0210.00617.34
8.1.60.0180.00417.47
8.1.50.0190.00517.45
8.1.40.0090.00417.51
8.1.30.0080.00517.45
8.1.20.0090.00417.60
8.1.10.0170.00617.52
8.1.00.0170.00623.04
8.0.300.0140.00417.76
8.0.290.0090.00416.65
8.0.280.0180.00617.61
8.0.270.0150.00916.70
8.0.260.0220.00516.77
8.0.250.0150.00216.88
8.0.240.0160.00716.63
8.0.230.0160.00416.82
8.0.220.0090.00416.89
8.0.210.0090.01016.64
8.0.200.0180.00316.83
8.0.190.0150.00816.90
8.0.180.0100.00616.84
8.0.170.0180.00616.87
8.0.160.0170.00616.82
8.0.150.0170.00716.79
8.0.140.0180.00716.74
8.0.130.0180.00514.99
8.0.120.0150.00716.86
8.0.110.0090.00516.75
8.0.100.0170.00716.80
8.0.90.0190.00816.60
8.0.80.0210.00916.74
8.0.70.0200.00716.70
8.0.60.0200.00416.69
8.0.50.0150.00516.73
8.0.30.0150.00817.09
8.0.20.0140.00917.29
8.0.10.0160.00716.91
8.0.00.0170.01216.83
7.4.330.0140.00815.93
7.4.320.0160.00516.46
7.4.300.0180.00316.42
7.4.290.0140.00816.51
7.4.280.0140.00716.49
7.4.270.0210.00316.46
7.4.260.0180.00316.43
7.4.250.0130.00816.36
7.4.240.0140.00616.45
7.4.230.0190.00516.30
7.4.220.0170.01116.50
7.4.210.0120.00716.21
7.4.200.0170.00416.45
7.4.190.0300.00716.19
7.4.180.0320.00716.38
7.4.160.0110.01016.48
7.4.150.0150.00716.87
7.4.140.0120.00717.54
7.4.130.0190.00716.31
7.4.120.0120.01116.47
7.4.110.0180.00816.25
7.4.100.0170.01216.32
7.4.90.0170.00916.35
7.4.80.0240.00317.75
7.4.70.0170.00516.45
7.4.60.0170.00716.24
7.4.50.0200.00616.25
7.4.40.0180.00916.34
7.4.30.0160.01016.34
7.4.20.0280.00816.28
7.4.10.0300.00716.16
7.4.00.0170.00815.43
7.3.330.0130.00514.67
7.3.320.0180.00414.67
7.3.310.0150.00815.92
7.3.300.0160.00616.18
7.3.290.0120.01016.28
7.3.280.0120.00716.29
7.3.270.0190.00816.70
7.3.260.0150.00916.21
7.3.250.0120.01316.31
7.3.240.0140.01016.40
7.3.230.0180.00816.44
7.3.220.0360.00716.26
7.3.210.0220.00516.23
7.3.200.0210.01016.27
7.3.190.0220.00516.29
7.3.180.0200.00416.25
7.3.170.0170.00516.35
7.3.160.0180.00916.28
7.3.150.0300.00716.12
7.3.140.0300.00716.14
7.3.130.0320.00716.09
7.3.120.0300.00716.04
7.3.110.0290.01015.80
7.3.100.0280.00515.80
7.3.90.0170.00416.54
7.3.80.0270.00415.97
7.3.70.0320.00416.09
7.3.60.0210.00716.30
7.3.50.0240.00916.28
7.3.40.0140.00316.16
7.3.30.0120.00516.21
7.3.20.0230.00315.84
7.3.10.0260.00716.38
7.3.00.0170.00616.21
7.2.340.0270.00916.07
7.2.330.0160.01116.39
7.2.320.0210.00716.48
7.2.310.0180.00916.61
7.2.300.0190.01316.35
7.2.290.0170.01016.38
7.2.280.0380.00815.94
7.2.270.0270.01116.27
7.2.260.0220.00716.21
7.2.250.0240.00915.95
7.2.240.0310.00916.34
7.2.230.0250.01116.14
7.2.220.0280.00915.96
7.2.210.0310.00716.21
7.2.200.0140.00316.39
7.2.190.0320.00416.46
7.2.180.0170.00616.32
7.2.170.0190.00516.58
7.2.160.0150.00216.57
7.2.150.0120.00616.44
7.2.140.0260.01216.41
7.2.130.0290.00816.42
7.2.120.0310.00716.32
7.2.110.0300.00716.35
7.2.100.0380.00516.38
7.2.90.0220.00416.20
7.2.80.0200.01116.33
7.2.70.0320.00816.42
7.2.60.0210.00416.81
7.2.50.0220.00216.65
7.2.40.0140.00516.65
7.2.30.0310.00616.65
7.2.20.0300.00816.59
7.2.10.0290.00916.19
7.2.00.0320.00616.26
7.1.330.0270.00715.32
7.1.320.0220.00714.99
7.1.310.0160.00515.23
7.1.300.0890.00615.12
7.1.290.0120.00615.51
7.1.280.0090.00715.32
7.1.270.0100.00515.32
7.1.260.0140.00415.27
7.1.250.0280.00915.02
7.1.240.0290.00615.49
7.1.230.0270.00615.27
7.1.220.0280.00615.45
7.1.210.0260.00715.16
7.1.200.0150.00815.46
7.1.190.0270.00715.42
7.1.180.0250.00415.39
7.1.170.0120.00315.26
7.1.160.0140.00215.28
7.1.150.0130.00315.30
7.1.140.0280.00715.26
7.1.130.0270.00615.29
7.1.120.0290.00515.26
7.1.110.0660.00715.71
7.1.100.0400.00815.85
7.1.90.0270.00415.63
7.1.80.0500.00515.90
7.1.70.0340.00715.21
7.1.60.0320.00924.20
7.1.50.0290.00624.17
7.1.40.0310.00924.09
7.1.30.0380.01424.01
7.1.20.0360.01224.08
7.1.10.0440.00714.83
7.1.00.0250.01315.05
7.0.330.0210.00522.25
7.0.320.0260.00714.98
7.0.310.0230.01015.01
7.0.300.0270.00714.88
7.0.290.0270.00614.75
7.0.280.0290.00415.16
7.0.270.0250.00615.18
7.0.260.0160.00815.02
7.0.250.0840.00815.63
7.0.240.0370.01115.60
7.0.230.0240.00715.42
7.0.220.0230.00615.24
7.0.210.0360.00914.79
7.0.200.0590.01014.95
7.0.190.0210.00914.80
7.0.180.0270.00614.69
7.0.170.0350.00714.72
7.0.160.0280.01014.74
7.0.150.1430.00714.71
7.0.140.0290.00814.81
7.0.130.0370.00814.96
7.0.120.0350.00914.92
7.0.110.0400.00514.70
7.0.100.0300.00914.73
7.0.90.0320.01414.83
7.0.80.0330.01114.81
7.0.70.0290.00914.85
7.0.60.0320.00814.65
7.0.50.0300.00914.81
7.0.40.0310.00914.81
7.0.30.0360.01214.92
7.0.20.0210.00715.91
7.0.10.0400.00914.90
7.0.00.0290.00815.84
5.6.400.0220.00622.52
5.6.390.0280.01015.78
5.6.380.0250.00915.87
5.6.370.0280.00615.62
5.6.360.0300.00515.80
5.6.350.0240.00815.52
5.6.340.0220.01115.41
5.6.330.0190.00815.66
5.6.320.0120.00315.55
5.6.310.0230.00715.70
5.6.300.0260.00715.53
5.6.290.0170.00715.53
5.6.280.0120.00315.48
5.6.270.0110.00415.60
5.6.260.0110.00415.64
5.6.250.0100.00515.64
5.6.240.0300.00515.38
5.6.230.0260.00615.84
5.6.220.0260.00615.59
5.6.210.0250.00515.71
5.6.200.0300.00615.71
5.6.190.0280.00515.94
5.6.180.0260.00615.71
5.6.170.0280.00415.66
5.6.160.0160.00215.85
5.6.150.0260.00515.81
5.6.140.0270.00515.85
5.6.130.0260.00415.73
5.6.120.0200.01115.62
5.6.110.0240.00515.67
5.6.100.0250.00615.76
5.6.90.0280.00415.60
5.6.80.0250.00815.71
5.6.70.0160.00515.78
5.6.60.0160.00415.51
5.6.50.0230.00615.69
5.6.40.0230.00715.86
5.6.30.0210.00915.52
5.6.20.0240.00615.49
5.6.10.0250.00615.58
5.6.00.0210.00915.62

preferences:
236.54 ms | 403 KiB | 5 Q