3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php $data = "wpdPVWejqNRYqDTeUJ2Iw06/rnfHAoy5jtgTojiilD0="; $pwd = "ICS2015"; $salt = "7"; $enc = Encrypt("boy10@naver.com", $pwd, $salt); echo "Enc: " . $enc . "\r\n"; $dec = Decrypt($data, $pwd, $salt); echo "Dec: " . $dec . "\r\n"; function Decrypt($ciphertext, $password, $salt) { $ciphertext = base64_decode($ciphertext); $key = PBKDF1($password, $salt, 100, 32); $iv = PBKDF1($password, $salt, 100, 16); echo "bb" . base64_encode($iv); // NB: Need 128 not 256 and CBC mode to be compatible $decpad = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext, MCRYPT_MODE_CBC, $iv); $pad = ord($decpad[($len = strlen($decpad)) - 1]); $dec = substr($decpad, 0, strlen($decpad) - $pad); return $dec; } function Encrypt($ciphertext, $password, $salt) { $key = PBKDF1($password, $salt, 100, 32); $iv = PBKDF1($password, $salt, 100, 16); echo "aa" . base64_encode($iv); return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext, MCRYPT_MODE_CBC, $iv)); } function PBKDF1($pass, $salt, $count, $cb) { static $base; static $extra; static $extracount= 0; static $hashno; static $state = 0; if ($state == 0) { $hashno = 0; $state = 1; $key = $pass . $salt; $base = sha1($key, true); for($i = 2; $i < $count; $i++) { $base = sha1($base, true); } } $result = ""; if ($extracount > 0) { $rlen = strlen($extra) - $extracount; if ($rlen >= $cb) { $result = substr($extra, $extracount, $cb); if ($rlen > $cb) { $extracount += $cb; } else { $extra = null; $extracount = 0; } return $result; } $result = substr($extra, $rlen, $rlen); } $current = ""; $clen = 0; $remain = $cb - strlen($result); while ($remain > $clen) { if ($hashno == 0) { $current = sha1($base, true); } else if ($hashno < 1000) { $n = sprintf("%d", $hashno); $tmp = $n . $base; $current .= sha1($tmp, true); } $hashno++; $clen = strlen($current); } // $current now holds at least as many bytes as we need $result .= substr($current, 0, $remain); // Save any left over bytes for any future requests if ($clen > $remain) { $extra = $current; $extracount = $remain; } return $result; } ?>
based on 88DA5
Output for 7.0.6 - 7.2.0
aaBWnvykvGs/KwmNm+QXcfEg== Fatal error: Uncaught Error: Call to undefined function mcrypt_encrypt() in /in/201SW:44 Stack trace: #0 /in/201SW(8): Encrypt('boy10@naver.com', 'ICS2015', '7') #1 {main} thrown in /in/201SW on line 44
Process exited with code 255.
Output for 5.4.10 - 5.5.34, 5.6.8 - 5.6.20, 7.0.0 - 7.0.5
aaBWnvykvGs/KwmNm+QXcfEg==Enc: 5ORVQBUIIDXqC2/5J5iNdg== bbVpzyzo7xyUnRTIZOkpjTpQ==Dec:
Output for 5.3.20 - 5.3.29, 5.5.35, 5.6.21 - 5.6.28
aaBWnvykvGs/KwmNm+QXcfEg== Fatal error: Call to undefined function mcrypt_encrypt() in /in/201SW on line 44
Process exited with code 255.