3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php var_dump(extension_loaded('mcrypt')); var_dump(extension_loaded('openssl')); $key = 'secret'; $input = 'My secret string!'; $iv = NULL; // MCrypt $handle = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_ECB, ''); // PKCS#7 padding //$bsize = mcrypt_enc_get_block_size($handle); //$pad = $bsize - (strlen($input) % $bsize); //$input .= str_repeat(chr($pad), $pad); // IV //$ivsize = mcrypt_enc_get_iv_size($handle); //$iv = mcrypt_create_iv($ivsize, MCRYPT_DEV_URANDOM); // Encrypt mcrypt_generic_init($handle, $key, $iv); $output = mcrypt_generic($handle, $input); mcrypt_generic_deinit($handle); mcrypt_module_close($handle); echo "MCrypt:\n", // "\tIV: ", bin2hex($iv), " (", $ivsize, " bytes)\n", "\tInput: ", bin2hex($input), "\n", "\tOutput: ", bin2hex($output), "\n\n"; //$output = $iv.$output; // OpenSSL // IV //$ivsize = openssl_cipher_iv_length('bf-ecb'); //$iv = substr($output, 0, $ivsize); //$output = substr($output, $ivsize); $input = openssl_decrypt($output, 'bf-ecb', $key, OPENSSL_RAW_DATA, $iv); echo "OpenSSL:\n", // "\tIV: ", bin2hex($iv), " (", $ivsize, " bytes)\n", "\tOutput: ", bin2hex($output), "\n", "\tInput: ", bin2hex($input), "\n\n"; empty($input) && var_dump(openssl_error_string());
Output for 7.0.6 - 7.1.0
bool(false) bool(true) Fatal error: Uncaught Error: Call to undefined function mcrypt_module_open() in /in/42uF3:10 Stack trace: #0 {main} thrown in /in/42uF3 on line 10
Process exited with code 255.
Output for 5.4.15 - 5.5.34, 5.6.0 - 5.6.20, 7.0.0 - 7.0.5
bool(true) bool(true) Warning: mcrypt_generic_init(): Iv size incorrect; supplied length: 0, needed: 8 in /in/42uF3 on line 22 MCrypt: Input: 4d792073656372657420737472696e6721 Output: 604694ee207d758813d560d64a2d04d99b5b2a50dcebc9f9 OpenSSL: Output: 604694ee207d758813d560d64a2d04d99b5b2a50dcebc9f9 Input: string(72) "error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt"
Output for hhvm-3.12.0
bool(true) bool(true) Warning: mcrypt_generic_init() expects parameter 3 to be string, null given in /in/42uF3 on line 22 Warning: Operation disallowed prior to mcrypt_generic_init(). in /in/42uF3 on line 23 Warning: Could not terminate encryption specifier in /in/42uF3 on line 24 MCrypt: Input: 4d792073656372657420737472696e6721 Output: Warning: openssl_decrypt() expects parameter 5 to be string, null given in /in/42uF3 on line 40 OpenSSL: Output: Input: Warning: bin2hex() expects parameter 1 to be string, null given in /in/42uF3 on line 45 bool(false)
Output for hhvm-3.10.0
bool(true) bool(true) Warning: Iv size incorrect; supplied length: 0, needed: 8 in /in/42uF3 on line 22 MCrypt: Input: 4d792073656372657420737472696e6721 Output: 604694ee207d758813d560d64a2d04d99b5b2a50dcebc9f9 OpenSSL: Output: 604694ee207d758813d560d64a2d04d99b5b2a50dcebc9f9 Input: string(72) "error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt"
Output for 5.5.35 - 5.5.38, 5.6.21 - 5.6.28
bool(false) bool(true) Fatal error: Call to undefined function mcrypt_module_open() in /in/42uF3 on line 10
Process exited with code 255.
Output for 5.4.0 - 5.4.14
bool(true) bool(false) Warning: mcrypt_generic_init(): Iv size incorrect; supplied length: 0, needed: 8 in /in/42uF3 on line 22 MCrypt: Input: 4d792073656372657420737472696e6721 Output: 604694ee207d758813d560d64a2d04d99b5b2a50dcebc9f9 Fatal error: Call to undefined function openssl_decrypt() in /in/42uF3 on line 40
Process exited with code 255.
Output for 5.0.0 - 5.3.29
bool(false) bool(false) Fatal error: Call to undefined function mcrypt_module_open() in /in/42uF3 on line 10
Process exited with code 255.
Output for 4.4.5 - 4.4.9
bool(false) bool(false) Fatal error: Call to undefined function: mcrypt_module_open() in /in/42uF3 on line 10
Process exited with code 255.
Output for 4.3.2 - 4.4.4
bool(false) bool(false) Fatal error: Call to undefined function: mcrypt_module_open() in /in/42uF3 on line 10
Process exited with code 255.
Output for 4.3.0 - 4.3.1
bool(false) bool(false) Fatal error: Call to undefined function: mcrypt_module_open() in /in/42uF3 on line 10