3v4l.org

run code in 300+ PHP versions simultaneously
<?php $salt = substr(str_replace('+', '.', base64_encode(sha1(microtime(true), true))), 0, 22); // 2a is the bcrypt algorithm selector, see http://php.net/crypt // 12 is the workload factor (around 300ms on my Core i7 machine), see http://php.net/crypt echo $hash = crypt('falcon', '$2a$12$' . $salt); echo "<br>"; echo '$2a$12$' . $salt; // we can now use the generated hash as the argument to crypt(), since it too will contain $a2$12$... with a variation of the hash. No need to store the salt anymore, just the hash is enough! var_dump($hash == crypt('foo', $hash)); // true var_dump($hash == crypt('falcon', $hash)); // false
Output for 7.1.25, 7.2.0, 7.2.2 - 7.2.13, 7.3.0 - 7.3.1
$2a$12$Hbdv7ccENNrclJjTjMFRvOD.OMAYtuCbEHmjJWFCr4r..yI8Mb2/2<br>$2a$12$Hbdv7ccENNrclJjTjMFRvPbool(false) bool(true)
Output for 7.2.1
$2a$12$gXXYh0kE2V90Nv7dtOTEbe9S0O5MixyUL/D/Qn.dqfzdFUSkSd7U2<br>$2a$12$gXXYh0kE2V90Nv7dtOTEbfbool(false) bool(true)
Output for 5.3.0, 5.3.2, 5.3.6, 5.3.27, 7.1.7
$2a$12$iha8ej5A8EKjkfi3abFk6uXT0Sy4Sz.70Qyk0AXJxqUiQjktOUAz6<br>$2a$12$iha8ej5A8EKjkfi3abFk66bool(false) bool(true)
Output for 7.1.6
$2a$12$BAE.GnTZVIIkP3U2cGHeE.Hfd4KnFV.PBNpL6u1WmB1sqYHNyTrAq<br>$2a$12$BAE.GnTZVIIkP3U2cGHeEMbool(false) bool(true)
Output for 7.1.5
$2a$12$5q2VXBn9luuV.ccgzjFeuuiMyocZWVPxz291UPiAoglsjkYslDF3q<br>$2a$12$5q2VXBn9luuV.ccgzjFeuwbool(false) bool(true)
Output for 5.3.13, 5.4.12, 7.1.0
$2a$12$bSJ1OXKkUHhrLV0HwTnySevZ/KxyZj/ccG70KIj5PnIpr6JYinuki<br>$2a$12$bSJ1OXKkUHhrLV0HwTnySjbool(false) bool(true)
Output for 5.3.10, 7.0.20
$2a$12$Bl.WBnmfrX4KbIbWdAALLuxwCnhowA92XRnfCXF1rtBvDY3/Xjcy.<br>$2a$12$Bl.WBnmfrX4KbIbWdAALLybool(false) bool(true)
Output for 5.4.13, 7.0.14
$2a$12$hvgK9rfbW5egpIr714DLHOg1HEuQeEKovQagfZQvJoL06Onn6Bzl2<br>$2a$12$hvgK9rfbW5egpIr714DLHSbool(false) bool(true)
Output for 7.0.6
$2a$12$SldxoXOrBXecRpkQsumISeoNXuUeAspAZDk1BLmXPCwXV2/jmYEnS<br>$2a$12$SldxoXOrBXecRpkQsumIShbool(false) bool(true)
Output for 7.0.5
$2a$12$NZdihIKH7bsDEZedk80ysesSDxFRQ8RnqmdY.3gEqrQH4n3.rHx3y<br>$2a$12$NZdihIKH7bsDEZedk80yskbool(false) bool(true)
Output for 7.0.4
$2a$12$p7C4iUyRxGuqLOFFKwMbDOcNxa8CSZrVox1Mr5uOX1TC0TYERSuD.<br>$2a$12$p7C4iUyRxGuqLOFFKwMbDbbool(false) bool(true)
Output for 7.0.3
$2a$12$bJHDunehALA0b4zbA1TX6eyIGrdrUUn/PDJ4.ZdjMbcCu1ZUWZd02<br>$2a$12$bJHDunehALA0b4zbA1TX6mbool(false) bool(true)
Output for 7.0.2
$2a$12$LJgoQxo8NGM0M6ZbvGJfWe/VuLbqRUQr/jWGPA7lTu8wT6ZukQlK.<br>$2a$12$LJgoQxo8NGM0M6ZbvGJfWpbool(false) bool(true)
Output for 7.0.1
$2a$12$MQLLk2u0QijfO/AgPnUG6.Ph09Sh.G6qOKQ9F/qiAk.jwn08jeM.O<br>$2a$12$MQLLk2u0QijfO/AgPnUG6Gbool(false) bool(true)
Output for 7.0.0
$2a$12$CCPT2BqZj492bdoyeueb5eJjrK4mprT8c7/o0wuqbNqDXVWGn5Dh6<br>$2a$12$CCPT2BqZj492bdoyeueb5kbool(false) bool(true)
Output for 5.4.15, 5.6.28
$2a$12$9pTv6Bareg4Ma6zTrjDAGukQfGLvWArVzqfJIXXeaBnH7iv7IazhS<br>$2a$12$9pTv6Bareg4Ma6zTrjDAG5bool(false) bool(true)
Output for 5.6.21
$2a$12$Va5Hr3W0/S5VGU73zs18WulHyf9hDUyKUrmL40z1ewnCzoN.k5RW6<br>$2a$12$Va5Hr3W0/S5VGU73zs18W2bool(false) bool(true)
Output for 5.6.20
$2a$12$uh53ibSajTBht5NhPjRhOOw2IaE2WtRgnuEJkKMucZZ7E0L5bpSh.<br>$2a$12$uh53ibSajTBht5NhPjRhOXbool(false) bool(true)
Output for 5.6.19
$2a$12$isO8IyKi8TFMIy.6Q2fOx.6km5f.Du.FFhNi/BowtptJOvtb8Qvvu<br>$2a$12$isO8IyKi8TFMIy.6Q2fOxHbool(false) bool(true)
Output for 5.6.18
$2a$12$.b4U0Oiye7HrdmwgeZaeXuTSq6/IenqhMBDUuRVLTGFsW1/J7gu32<br>$2a$12$.b4U0Oiye7HrdmwgeZaeX9bool(false) bool(true)
Output for 5.6.17
$2a$12$zi.mSK4Cv/RBFLrmZdbEHeDpRkLA8a650jHJDr8A7WFy.MAuf05i6<br>$2a$12$zi.mSK4Cv/RBFLrmZdbEHqbool(false) bool(true)
Output for 5.6.16
$2a$12$lSRu32Gp2u./eeKBBUZHSO4VcrG/eOSebDXVxeEUU5ovfePdb2k9y<br>$2a$12$lSRu32Gp2u./eeKBBUZHSSbool(false) bool(true)
Output for 5.6.15
$2a$12$RWtZc8Kx.Tr.Hh9siWMR4unkp4KtbKZA7eGkOPZx3k4Dam8AB7Pz2<br>$2a$12$RWtZc8Kx.Tr.Hh9siWMR47bool(false) bool(true)
Output for 5.6.14
$2a$12$pJKFLfZqkeRZ9F6RUDGa2euiMMJDbz642F5wmR6ix8kso9rTtoPpy<br>$2a$12$pJKFLfZqkeRZ9F6RUDGa2rbool(false) bool(true)
Output for 5.6.13
$2a$12$BwHBRPDE7geU4g.f4WhyuOei61EHYJpuxU1OxivL0gXxX0kGP382u<br>$2a$12$BwHBRPDE7geU4g.f4WhyuZbool(false) bool(true)
Output for 5.6.12
$2a$12$dmQqzFqpFAu3A7OfM0XuTutTrb8fQU06EYje7DhD7zROO5TO5dU0m<br>$2a$12$dmQqzFqpFAu3A7OfM0XuT0bool(false) bool(true)
Output for 5.6.11
$2a$12$wP1YdJg6eRKMtFLQRXet/.NuPFelIs59QCW3OM1KtIwwYP/f2K2WO<br>$2a$12$wP1YdJg6eRKMtFLQRXet/Cbool(false) bool(true)
Output for 5.6.10
$2a$12$ghHD0PtL/dM3lyczWFKym.ayq6MEyqbIx9dgtNaApPLpFLMipNGJ.<br>$2a$12$ghHD0PtL/dM3lyczWFKymCbool(false) bool(true)
Output for 5.6.9
$2a$12$yxSlTh7ibYBo0epl5KrtL.1zQl2k5J/Ho59.Mr/BdrKkDMZuhbyvq<br>$2a$12$yxSlTh7ibYBo0epl5KrtLJbool(false) bool(true)
Output for 5.6.8
$2a$12$Rp7U/FLW9FFC47y/nJ11v.qycNYCStznZum0iO/qVc2Q.Z5eVKZBi<br>$2a$12$Rp7U/FLW9FFC47y/nJ11vHbool(false) bool(true)
Output for 5.5.35
$2a$12$XxfVPzFDVPMRQ33I6fTp4eQwu.g/cWdnRprPLWqwpNf1dMxaWxIaq<br>$2a$12$XxfVPzFDVPMRQ33I6fTp4jbool(false) bool(true)
Output for 5.5.34
$2a$12$pMgFT9jnTKcdgQpQbMjhfO18SoOpxqUbgEdyKjD6ArNb/SySaheQ.<br>$2a$12$pMgFT9jnTKcdgQpQbMjhfRbool(false) bool(true)
Output for 5.5.33
$2a$12$vykQH2NTLk1VuAkb01EZdOth3RXlq9erWao1Fcn1J4nixBUGfhstO<br>$2a$12$vykQH2NTLk1VuAkb01EZdbbool(false) bool(true)
Output for 5.5.32
$2a$12$1CMmLfpdNf7ZhV/G46GkpuK3ii2xDzx7RJCgp0lNKOyhEqCPYMGqq<br>$2a$12$1CMmLfpdNf7ZhV/G46Gkp2bool(false) bool(true)
Output for 5.5.31
$2a$12$kPI8rJJsshBuaCLqttLd0udUQWMlU2taJcMgbYKDp7SEpx9j960TC<br>$2a$12$kPI8rJJsshBuaCLqttLd0vbool(false) bool(true)
Output for 5.5.30
$2a$12$.1ZYKCzqSck36LHcR5.gxeErXLF/zvW.BpU8DJi2fBgen..ocwoES<br>$2a$12$.1ZYKCzqSck36LHcR5.gxtbool(false) bool(true)
Output for 5.5.29
$2a$12$YshyKqqKdqWyuij7tDH73ODS41OLq5.Po2oF0eOGNdIN/S4c4ukIy<br>$2a$12$YshyKqqKdqWyuij7tDH73Xbool(false) bool(true)
Output for 5.5.28
$2a$12$DUxO2PQYbw0xkLpP0tm3YOdXjQR9VUpsF8oDfyhUzWT/X/48YeHRK<br>$2a$12$DUxO2PQYbw0xkLpP0tm3YZbool(false) bool(true)
Output for 5.5.27
$2a$12$EYaN7T0cumjbpkCxsjrMN.7HTyCaklGnIWUrOBXWZK4myKwCVdlWy<br>$2a$12$EYaN7T0cumjbpkCxsjrMNFbool(false) bool(true)
Output for 5.5.26
$2a$12$/vsXw2YgoE0QiTn1W0Qcw.4ymdT5TyKrERvomR23rYlHTzGbAztJq<br>$2a$12$/vsXw2YgoE0QiTn1W0QcwHbool(false) bool(true)
Output for 5.5.25
$2a$12$shL3xtUAfbxuuj1G8BMBDOC7lfs2q9BoMrnCkTE9S9VZQJGkW3EFu<br>$2a$12$shL3xtUAfbxuuj1G8BMBDXbool(false) bool(true)
Output for 5.5.24
$2a$12$1rbE2gLgqHtxUEqha3r3qubaSciRud/aCQfKg.oaV2lqz1wjjcWAi<br>$2a$12$1rbE2gLgqHtxUEqha3r3q3bool(false) bool(true)
Output for 5.4.45
$2a$12$HRe/SiYe2l2uvGG2sAYXyuRASA8dAa9iS1ISqPsiXRRnpwnSrFfq.<br>$2a$12$HRe/SiYe2l2uvGG2sAYXy7bool(false) bool(true)
Output for 5.4.44
$2a$12$K2U4UupQ88s1LcQjoaG3Su1n9llHDC83V6cDS27b6AaDllHbFaOEC<br>$2a$12$K2U4UupQ88s1LcQjoaG3S8bool(false) bool(true)
Output for 5.4.43
$2a$12$vBfTOtSamW0g9pQSOf0kDuo07JgTDtJQWZCw1D3NAZB1cpm.YM/DO<br>$2a$12$vBfTOtSamW0g9pQSOf0kDwbool(false) bool(true)
Output for 5.4.42
$2a$12$udX8hOtIxYHWnUdIkzEOdui2RSO9J.EdY.HHs61gcJol0l6P24Aii<br>$2a$12$udX8hOtIxYHWnUdIkzEOd5bool(false) bool(true)
Output for 5.4.41
$2a$12$bE3.WGajDx7aJRCovApCW.3REHSa86JPqoTVR6Q0WDMFaQd5kn4PG<br>$2a$12$bE3.WGajDx7aJRCovApCW.bool(false) bool(true)
Output for 5.4.40
$2a$12$tA98vJJrGPnBi4sjQkgJ1egBjWxlBjH5t96x46zcWOdOGff6GyF.G<br>$2a$12$tA98vJJrGPnBi4sjQkgJ1kbool(false) bool(true)
Output for 5.4.39
$2a$12$dEDQvzzf4OvkxUgxK/vBH.EwivSlHZOyBi1rAQE9gpchVgHMYkVUe<br>$2a$12$dEDQvzzf4OvkxUgxK/vBHBbool(false) bool(true)
Output for 5.4.38
$2a$12$66VwFoCFyPnGUVymqoKwGuBtjtcz30pjw2ONVFQu1kJiVL7ZW8DAa<br>$2a$12$66VwFoCFyPnGUVymqoKwG3bool(false) bool(true)
Output for 5.4.37
$2a$12$Kq.R1yjIxWcK.CN5XPpLH.GpmwG.pIu00ozbKOdpvoYRBMeHnFPcG<br>$2a$12$Kq.R1yjIxWcK.CN5XPpLHEbool(false) bool(true)
Output for 5.4.36
$2a$12$rp7plvH82yJyXFTrEa4L7uiT86/6V/va8LRVF.H5.gx6Bv4bPz1qC<br>$2a$12$rp7plvH82yJyXFTrEa4L7vbool(false) bool(true)
Output for 5.4.35
$2a$12$.bD0QRPJAp0rfXMC5swEo.U99nLg6F3Pcq0hv8WAanQ4qqLzLANOG<br>$2a$12$.bD0QRPJAp0rfXMC5swEo.bool(false) bool(true)
Output for 5.4.34
$2a$12$T7cIeVcjJxdVfuQ.QzIJqO1xBLpT1GOnLzxERxuLWBG86Y5oY4iGe<br>$2a$12$T7cIeVcjJxdVfuQ.QzIJqZbool(false) bool(true)
Output for 5.4.32
$2a$12$QcNlKXD8Bjn4i85vZK/RveXlvfPLqP7i7Ypa.2mUhfnOGZRUTB9v2<br>$2a$12$QcNlKXD8Bjn4i85vZK/Rvnbool(false) bool(true)
Output for 5.4.31
$2a$12$gZ/QetpdGHrGUSv.WO9dauuiZHXWe9elw6mjIPMW3ZJv9nHtmIgTq<br>$2a$12$gZ/QetpdGHrGUSv.WO9davbool(false) bool(true)
Output for 5.4.30
$2a$12$CVOUzWmtwTMYk6z2CQZEsuBQZ2IoXgItvr8andvmnTudW8gELKBN2<br>$2a$12$CVOUzWmtwTMYk6z2CQZEs5bool(false) bool(true)
Output for 5.4.29
$2a$12$BxDuS2WxoLks7i2LliiG5.gGdBLX8EtDnsqGDPpGwnew3vQYJP2vi<br>$2a$12$BxDuS2WxoLks7i2LliiG5Lbool(false) bool(true)
Output for 5.4.28
$2a$12$Sz5cZ6SqorR8Y/kIrWJO9e3pYyJsW6mSjT/jMX5KheDZRtTQur3Nu<br>$2a$12$Sz5cZ6SqorR8Y/kIrWJO9tbool(false) bool(true)
Output for 5.4.27
$2a$12$YdIQXJhGZARYdx.BB5qXVuXKMiSn7xuIlxFOMF9vXkdYhVIK8.i.u<br>$2a$12$YdIQXJhGZARYdx.BB5qXVzbool(false) bool(true)
Output for 5.4.26
$2a$12$wyO9B53NNEUvf8QnwADzaeul7MwWZX7sC38Xa1sjquNoU90kfvllC<br>$2a$12$wyO9B53NNEUvf8QnwADzarbool(false) bool(true)
Output for 5.4.17, 5.4.25
$2a$12$lie411PunA/QHBft1dAiBOrwQ0eoSl1I.31qS0ulKYPNc.g0IoM7u<br>$2a$12$lie411PunA/QHBft1dAiBbbool(false) bool(true)
Output for 5.4.24
$2a$12$rCcDlP3Fdj01EduK2t8MNujJd3Be7o2wy43eMiaY/k79CT0EcHbrS<br>$2a$12$rCcDlP3Fdj01EduK2t8MN8bool(false) bool(true)
Output for 5.4.23
$2a$12$S7pg3sbfRkrjAX.FU.aGluRki3rRJJUR0z7b.jY1LgI9fLJD8zEY.<br>$2a$12$S7pg3sbfRkrjAX.FU.aGlwbool(false) bool(true)
Output for 5.4.20, 5.4.22
$2a$12$kG833.lpjhIqXgD.iuWFk.APZIRMfZdPHZ754wXP55TrMRzNtkV8.<br>$2a$12$kG833.lpjhIqXgD.iuWFkMbool(false) bool(true)
Output for 5.4.21
$2a$12$9IlMCa9rYMo7vKue3dbZSOTwZy.4u.vSufKfLQWPIlneidsmJfvie<br>$2a$12$9IlMCa9rYMo7vKue3dbZSTbool(false) bool(true)
Output for 5.4.19
$2a$12$nVo4yHvKV.jCZwslvaR4tuiEodzfw5npJWIIOjdlvzddRl7s6zc0S<br>$2a$12$nVo4yHvKV.jCZwslvaR4t1bool(false) bool(true)
Output for 5.4.3, 5.4.16, 5.4.18
$2a$12$ZaR5rbIjzI4EDwSwNkLxxux0MqnyQ6ksBenhbn5jgL6pEsIyITFG.<br>$2a$12$ZaR5rbIjzI4EDwSwNkLxx5bool(false) bool(true)
Output for 5.3.9, 5.3.21, 5.4.1, 5.4.14
$2a$12$yATR/f88X1lZS71TVI2PCu1XDrFSY0Zi4EGZ/Z1gCrmWVno3nq4C2<br>$2a$12$yATR/f88X1lZS71TVI2PCxbool(false) bool(true)
Output for 5.3.1, 5.3.5, 5.3.8, 5.3.15, 5.3.17 - 5.3.18, 5.3.20, 5.4.10 - 5.4.11
$2a$12$1RV93WlvSwtPTA959nENZedhLEF4p.LK5Wh0ViYqSSp2gNkqxAnwG<br>$2a$12$1RV93WlvSwtPTA959nENZmbool(false) bool(true)
Output for 5.4.4, 5.4.9
$2a$12$xuroQ9DB5Xf3Cz3VHTfqoeXCa/V6TFm354HBg56mx7pKFxrINgjWi<br>$2a$12$xuroQ9DB5Xf3Cz3VHTfqogbool(false) bool(true)
Output for 5.3.11, 5.3.26, 5.4.8
$2a$12$d14PNBDqYdfRXtjdkRUCYeuxLCMUdeTueS3s4XIskfUvwJmFnkLhy<br>$2a$12$d14PNBDqYdfRXtjdkRUCYjbool(false) bool(true)
Output for 5.3.16, 5.4.0, 5.4.7
$2a$12$Tqw0gpvM9BZtSm16vMFibe6OEHj0s8SbpVkGi/5sQsN9utfJAirPi<br>$2a$12$Tqw0gpvM9BZtSm16vMFibjbool(false) bool(true)
Output for 5.3.14, 5.3.22, 5.4.6
$2a$12$.sDZuaMblvjqrAS1lgVl8.dobW2enwgVai7gGFBuCvyPOZ61wGbnC<br>$2a$12$.sDZuaMblvjqrAS1lgVl8/bool(false) bool(true)
Output for 5.4.2, 5.4.5
$2a$12$HQXauSR0fWnpP48yfEsjFOdTVmLcWolv8CM09n29HhboMCZJmeqN.<br>$2a$12$HQXauSR0fWnpP48yfEsjFXbool(false) bool(true)
Output for 5.3.29
$2a$12$j1JB2CtHUMuSyuumW9S7OOKtnWQWLdA/MctQE95/GLrmso9EGY4BK<br>$2a$12$j1JB2CtHUMuSyuumW9S7Odbool(false) bool(true)
Output for 5.3.28
$2a$12$swZcWkCWKIJLPmTS5gPNAuGZLCI3QqKmGaAd50xp4/7rB3.wJGA2a<br>$2a$12$swZcWkCWKIJLPmTS5gPNA0bool(false) bool(true)
Output for 5.3.4, 5.3.25
$2a$12$ub4aixvbsBc1Nqk2hRDVCOyuy0HNWwwcDO29/Mun3BfBhHZl7C2vu<br>$2a$12$ub4aixvbsBc1Nqk2hRDVCbbool(false) bool(true)
Output for 5.3.7, 5.3.12, 5.3.19, 5.3.24
$2a$12$pA8xVUKYgWuevpzd.tFD9.3NkFcd8KMsI7OPUQ/BRp74U6wFH0wmi<br>$2a$12$pA8xVUKYgWuevpzd.tFD9Bbool(false) bool(true)
Output for 5.3.3, 5.3.23
$2a$12$itohWElnNLvS2bzSuTOIYuJUF.agAZaE0O9xNuGXS/OhMLOsoWn4G<br>$2a$12$itohWElnNLvS2bzSuTOIY2bool(false) bool(true)
Output for 5.0.0 - 5.0.5, 5.1.1 - 5.1.6, 5.2.0 - 5.2.17

Process exited with code 139.
Output for 5.1.0
Fatal error: fatal flex scanner internal error--end of buffer missed in /in/aPo47 on line 13
Process exited with code 255.
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9
Warning: Wrong parameter count for sha1() in /in/aPo47 on line 3
Process exited with code 139.

preferences:
162.63 ms | 402 KiB | 190 Q