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); var_dump('$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.2.0
$2a$12$hRb9hdrGhcsmqTVlPL6/n.WcT3wqXBsc1cHN/XWV0YNn2t3NYw93qstring(29) "$2a$12$hRb9hdrGhcsmqTVlPL6/nN" bool(false) bool(true)
Output for 7.1.7
$2a$12$mTZQovuFFNuhWtXGXHOEtu2qbivs4GCjI25YCMVl/PfRPJCKxne7Wstring(29) "$2a$12$mTZQovuFFNuhWtXGXHOEtu" bool(false) bool(true)
Output for 7.1.6
$2a$12$/ehB7wk1fM.leLkHzWbQA.2KboMiTmbRjd4DLGgJId./SmJNIaVuSstring(29) "$2a$12$/ehB7wk1fM.leLkHzWbQAF" bool(false) bool(true)
Output for 7.1.5
$2a$12$FbmKWMieIJSX91FOcyNvKuGgPwUnf7jWupssq1Xa7NhlkPMLuNjQmstring(29) "$2a$12$FbmKWMieIJSX91FOcyNvKw" bool(false) bool(true)
Output for 5.3.28, 5.4.26, 5.6.28, 7.1.0
$2a$12$q6m7BcErxzMqQTOuihf7ROhZmghSM7JWsqNxbX9j3/lfntavgwb9Ostring(29) "$2a$12$q6m7BcErxzMqQTOuihf7Ra" bool(false) bool(true)
Output for 5.3.6, 5.4.0, 5.4.3, 7.0.20
$2a$12$9DSuTP1OQ8VQZYOOPqzvv.PMRuQubRHaoJNB4JcrQzvK22jCMH2Mestring(29) "$2a$12$9DSuTP1OQ8VQZYOOPqzvvA" bool(false) bool(true)
Output for 7.0.14
$2a$12$7Z2etJ6YEd75w4o5YzPfKuiDZgDp3QTKJ9k7bUYJIBoxzf7m6g37.string(29) "$2a$12$7Z2etJ6YEd75w4o5YzPfK7" bool(false) bool(true)
Output for 7.0.6
$2a$12$kofMmMw/xeHSLuyyKRl9y.qeCDC8tOyJO1Ofioe9JMfdBGM52I7Fistring(29) "$2a$12$kofMmMw/xeHSLuyyKRl9yC" bool(false) bool(true)
Output for 7.0.5
$2a$12$OcAIphKFZh.VRorwkjA7pux/mc4J55THYlTVC5Dw7qbNhyIEsCkgestring(29) "$2a$12$OcAIphKFZh.VRorwkjA7p4" bool(false) bool(true)
Output for 7.0.4
$2a$12$kx/yFd6HsEwiw7UDDqyVE.BS/Om28SFWvfCOhneXyuWYPg1rKNEdqstring(29) "$2a$12$kx/yFd6HsEwiw7UDDqyVEK" bool(false) bool(true)
Output for 7.0.3
$2a$12$8bOtEWNPC9Vuse941U3qje/07iqqtHDHkFHxPY2oCAvlTlF6XTWEistring(29) "$2a$12$8bOtEWNPC9Vuse941U3qjn" bool(false) bool(true)
Output for 7.0.2
$2a$12$b.CsK.I3Iz27BJf2Pjt1OOSJvnMyOF5pnUp8R2p7Dgntl52/GbGg.string(29) "$2a$12$b.CsK.I3Iz27BJf2Pjt1OO" bool(false) bool(true)
Output for 7.0.1
$2a$12$wU2filvHdKqUbdT8QpDfP.pLs6GnAxOSNM1nxaegzTxDsE4uOptrqstring(29) "$2a$12$wU2filvHdKqUbdT8QpDfPE" bool(false) bool(true)
Output for 7.0.0
$2a$12$b0hvFGeFUIsnyfIrlZQ7muRgEMQrNjvAn7nrGD1Au7vNxWJNDMQR6string(29) "$2a$12$b0hvFGeFUIsnyfIrlZQ7mu" bool(false) bool(true)
Output for 5.6.21
$2a$12$T1e.VLG50/oUy7DmWxAx7OLV..juQbrINVdBP4w6.LRtZcdPxAW/ystring(29) "$2a$12$T1e.VLG50/oUy7DmWxAx7a" bool(false) bool(true)
Output for 5.6.20
$2a$12$TJLsjpNvntzb6yCtldAPZOs8LCbkNgsUsXTbKukvFB6MSuPX3xdM2string(29) "$2a$12$TJLsjpNvntzb6yCtldAPZT" bool(false) bool(true)
Output for 5.6.19
$2a$12$5zelmDIqHYv3hiLTUnkzO.dpYh5Rut6G9ecM6xjXeWVgHAidmj8Zqstring(29) "$2a$12$5zelmDIqHYv3hiLTUnkzOK" bool(false) bool(true)
Output for 5.6.18
$2a$12$tWkGJBuDS5t/otydr3iMyeH/cNLNXX1Cgv1fPAaPvbT8wbKhGwm7Sstring(29) "$2a$12$tWkGJBuDS5t/otydr3iMyo" bool(false) bool(true)
Output for 5.6.17
$2a$12$WfZX4vcJd1msIfI/yXclKuBA.Va9fwwBuVuigF2lTDW4MKIkjb0tystring(29) "$2a$12$WfZX4vcJd1msIfI/yXclK7" bool(false) bool(true)
Output for 5.6.16
$2a$12$EqYAArbR/cqNqMKEIaY38upDGkA0oaJjuQipgYL2hRXsveeOCuLVqstring(29) "$2a$12$EqYAArbR/cqNqMKEIaY384" bool(false) bool(true)
Output for 5.6.15
$2a$12$ornSLi1zs99fOZn.ZOfT/e7MxEwBnUpose7b.3IHi.O5L1aLMrSoGstring(29) "$2a$12$ornSLi1zs99fOZn.ZOfT/p" bool(false) bool(true)
Output for 5.6.14
$2a$12$LZyldDE.raMrBXylK/kjNer/cO1XKVMxjaxhPGXutRM51RsxDkjoastring(29) "$2a$12$LZyldDE.raMrBXylK/kjNg" bool(false) bool(true)
Output for 5.6.13
$2a$12$NqfaimkvYTKrGL7yul5HX.7n29zcZd490z66J5AXdkNa81hJSmD6Gstring(29) "$2a$12$NqfaimkvYTKrGL7yul5HXG" bool(false) bool(true)
Output for 5.6.12
$2a$12$Sw09di4elNeKF6YvTlsUhe5XPlThxd6kImg4YBCHtzWDNYfrGPOE6string(29) "$2a$12$Sw09di4elNeKF6YvTlsUht" bool(false) bool(true)
Output for 5.6.11
$2a$12$C56pSZKwdCcPY4i1cjp3Ru2VV.JlIO7sE0ksL.l/qseVIqeE2HXSastring(29) "$2a$12$C56pSZKwdCcPY4i1cjp3Rx" bool(false) bool(true)
Output for 5.6.10
$2a$12$VI8ySqgYXDuya.o6hzVihOWC4BA54i8JdmDb9EjtE3k55EXnMbkm6string(29) "$2a$12$VI8ySqgYXDuya.o6hzVihQ" bool(false) bool(true)
Output for 5.6.9
$2a$12$WFEDgWKq302.7sOP07ggtuMr4q22yWwxjL31qIeUzUx2go7/PKV/Wstring(29) "$2a$12$WFEDgWKq302.7sOP07ggt6" bool(false) bool(true)
Output for 5.6.8
$2a$12$GHx.mOzbSzb6qwRizxh03udwKI6Ez.qVWdUPwXCUFZ4DqIyN3Md.astring(29) "$2a$12$GHx.mOzbSzb6qwRizxh03u" bool(false) bool(true)
Output for 5.6.7
$2a$12$Vv6oc5wlFmf5Ynu4Dmi/KeIaCmLX/d.lWsuVOYFDM1cJYVfliWdfCstring(29) "$2a$12$Vv6oc5wlFmf5Ynu4Dmi/Kh" bool(false) bool(true)
Output for 5.5.35
$2a$12$HmyggsHo4CVXCA2PbS8be.OEjFLq7Py0Wbpi.h00273aJzdWtpn3Wstring(29) "$2a$12$HmyggsHo4CVXCA2PbS8beI" bool(false) bool(true)
Output for 5.5.34
$2a$12$O2LYB5YFv.HWGwcQud4LNOeQKDDkK.Uosqmb3I1KXjSE9Quwh8rNastring(29) "$2a$12$O2LYB5YFv.HWGwcQud4LNS" bool(false) bool(true)
Output for 5.5.33
$2a$12$WakySCBi98fyG3GSdAD8lOEOJjbFLdgpbUutPZ9Tm91hqF2lDjuJKstring(29) "$2a$12$WakySCBi98fyG3GSdAD8lb" bool(false) bool(true)
Output for 5.5.32
$2a$12$m8UE/0N8WRWSy9WvvJ9mJ.US5Cz.tKjFYXA2ife7MQVYDLR9XcSSmstring(29) "$2a$12$m8UE/0N8WRWSy9WvvJ9mJK" bool(false) bool(true)
Output for 5.5.31
$2a$12$o8wiVc7BhdQMJhXZdmKm3eYZKdFmjUpcki.mNhSdvhQQBPF2CDpJestring(29) "$2a$12$o8wiVc7BhdQMJhXZdmKm3t" bool(false) bool(true)
Output for 5.5.30
$2a$12$AWwnvploabrXewEF4hC6tu3wzLJSBi/VJhLEeb.Nhs9YKf2ctGk3qstring(29) "$2a$12$AWwnvploabrXewEF4hC6t6" bool(false) bool(true)
Output for 5.5.29
$2a$12$PHNjibyV4LOYf4DvmAJZzeUZ4BVNkImKD8Q.gAWBGhdiDwaTJxyPGstring(29) "$2a$12$PHNjibyV4LOYf4DvmAJZzj" bool(false) bool(true)
Output for 5.5.28
$2a$12$fA0Uu6NW.ULhwsrOSxoVaO8rUrTIrguQwxYZ8v2QtHi0H7keTWgzWstring(29) "$2a$12$fA0Uu6NW.ULhwsrOSxoVaa" bool(false) bool(true)
Output for 5.5.27
$2a$12$EaMIFqyxzRPqghoZW/zzEO4Z78V2/3e4FqpE38Mb8sxpxRLU.YEfystring(29) "$2a$12$EaMIFqyxzRPqghoZW/zzES" bool(false) bool(true)
Output for 5.5.26
$2a$12$fzzct1yW7jaLvW8473GEgeD5ECTmRgdyAQrd804PFRred2.A4jVuistring(29) "$2a$12$fzzct1yW7jaLvW8473GEgg" bool(false) bool(true)
Output for 5.5.25
$2a$12$cZ6S5Wk7SNXHHDK7GXUEhOa4EdQGGGVH2dNVUvAuxAbixrLHe.r5qstring(29) "$2a$12$cZ6S5Wk7SNXHHDK7GXUEhU" bool(false) bool(true)
Output for 5.5.24
$2a$12$YQ5zAnJ2tIlyO6uEQyQyrOiesvrYd8YihBpSGAz4O5AQ2Rs22nEymstring(29) "$2a$12$YQ5zAnJ2tIlyO6uEQyQyrQ" bool(false) bool(true)
Output for 5.4.45
$2a$12$GzazTFQ80cqh8tbcbJCCkuXOMa/Nr.9TZoLOKnF0LsRTVo96oyFHystring(29) "$2a$12$GzazTFQ80cqh8tbcbJCCk2" bool(false) bool(true)
Output for 5.4.44
$2a$12$1AiEc9FUzEhaaCFfzYejCuJ3gJaHREPq1dY.NfMxdzlRJE3b4d1wastring(29) "$2a$12$1AiEc9FUzEhaaCFfzYejCu" bool(false) bool(true)
Output for 5.4.43
$2a$12$YMnmQKzxlCdStD06rmetZuHPo1KqqizyBzmn7hBM10HyFlJM1VLhystring(29) "$2a$12$YMnmQKzxlCdStD06rmetZ3" bool(false) bool(true)
Output for 5.4.42
$2a$12$qFtt6uHJQQGUsJWRPlqX.OjIh4mMtmfRt4l1FoZWkbXn4uHDYAGK.string(29) "$2a$12$qFtt6uHJQQGUsJWRPlqX.d" bool(false) bool(true)
Output for 5.4.41
$2a$12$GB0TD6Y4nUOmBc.YXsbLUunJ5mzaBDBICoyCy0ENuk7Xv8ly2Mtxqstring(29) "$2a$12$GB0TD6Y4nUOmBc.YXsbLU8" bool(false) bool(true)
Output for 5.4.40
$2a$12$zg.dEMmQ3zDIhMIvWvPRBezcabpL3jRu66lW1rl6Es/HMvtjvNuhmstring(29) "$2a$12$zg.dEMmQ3zDIhMIvWvPRBs" bool(false) bool(true)
Output for 5.4.39
$2a$12$8pU5Yif8iAhRaZrR2Z3k8udaJti9Sr9NDQtLiDx7TUuHUuq7nToC2string(29) "$2a$12$8pU5Yif8iAhRaZrR2Z3k8x" bool(false) bool(true)
Output for 5.4.38
$2a$12$M4Eiud41SLvoy23vIadHkeeR5mE3rM25d2zxI2d5z.TPg.Arg4nbmstring(29) "$2a$12$M4Eiud41SLvoy23vIadHki" bool(false) bool(true)
Output for 5.4.37
$2a$12$uUzANFcOX/cAmh/UfE9t5OCfKsO69T4JJqRjBExzhNTnNyOUAvAU6string(29) "$2a$12$uUzANFcOX/cAmh/UfE9t5V" bool(false) bool(true)
Output for 5.4.36
$2a$12$s3TDDPUtWZNvejTQcbWKfuQ6mSKU1sY.PMUt9OVJ7gAD/kLrLKahastring(29) "$2a$12$s3TDDPUtWZNvejTQcbWKf0" bool(false) bool(true)
Output for 5.4.35
$2a$12$8XbTVIbUCjN2SCx/mJfJBOgwmCS.fXolg/GsoUr8U/urMq8aIy9tustring(29) "$2a$12$8XbTVIbUCjN2SCx/mJfJBU" bool(false) bool(true)
Output for 5.4.34
$2a$12$wuruf6.AVXfQeI09Wa25JubeZJ7lq2Cfu1hP/9cVQyJhEeCNeyHAistring(29) "$2a$12$wuruf6.AVXfQeI09Wa25J2" bool(false) bool(true)
Output for 5.4.32
$2a$12$hb85K7axziEtkBn5PRrqPezQcdUd3vy4sVyb1egekELEDUECxE6B2string(29) "$2a$12$hb85K7axziEtkBn5PRrqPo" bool(false) bool(true)
Output for 5.4.31
$2a$12$a1EfJ1MCsh/3OEBmgVAvfOBvyW76YDtj94vgblAca/jxN41XMBlgystring(29) "$2a$12$a1EfJ1MCsh/3OEBmgVAvfP" bool(false) bool(true)
Output for 5.4.30
$2a$12$I91dnYWA4ofCMkYIf22Pjut5Laos2CL4b8G/EIttS.2hmz8ofowICstring(29) "$2a$12$I91dnYWA4ofCMkYIf22Pju" bool(false) bool(true)
Output for 5.4.29
$2a$12$wt6/i9NkHYI1y06tlmUaOOypWM9yxgXi069Bz/4qCWXH3ROTUrJqKstring(29) "$2a$12$wt6/i9NkHYI1y06tlmUaOQ" bool(false) bool(true)
Output for 5.4.28
$2a$12$o4rfHESgjFa8KrHj.bYu6u1shfFkrM3oa.m98JDvlIohDoErJMPVOstring(29) "$2a$12$o4rfHESgjFa8KrHj.bYu68" bool(false) bool(true)
Output for 5.4.27
$2a$12$Yc27fbhAZ1fcgIM7MC7PCOWHamkc2PW07a3dqxS.bXYwieXaupFE2string(29) "$2a$12$Yc27fbhAZ1fcgIM7MC7PCX" bool(false) bool(true)
Output for 5.4.25
$2a$12$xQTXOpRmpAtmXLb6ln6maOfSyV8CaPribGuVvn1KlMAFCuCogvGkWstring(29) "$2a$12$xQTXOpRmpAtmXLb6ln6mac" bool(false) bool(true)
Output for 5.4.24
$2a$12$KyQWgibVNIfkF.q0laueJeyoj.g3snfz8hcyBz7.AcgJimbwlDSXKstring(29) "$2a$12$KyQWgibVNIfkF.q0laueJt" bool(false) bool(true)
Output for 5.4.17, 5.4.22 - 5.4.23
$2a$12$j8qliISlDKGYQ/9/hQfuqeQVmKrdkbyI16ZQN4Ksm6sxmAJ/dSgYistring(29) "$2a$12$j8qliISlDKGYQ/9/hQfuqq" bool(false) bool(true)
Output for 5.3.25, 5.4.21
$2a$12$uwRyvH9DbFDG5Imrg7RdZ.vqB1hNwucpv4QD1gw0TAPtHu0Ce6Tzustring(29) "$2a$12$uwRyvH9DbFDG5Imrg7RdZC" bool(false) bool(true)
Output for 5.4.20
$2a$12$IyJIQFRapwGM3oI9L8BVKO1rCspvb4CNQL.LbGU4P/OV.aNJATzvustring(29) "$2a$12$IyJIQFRapwGM3oI9L8BVKP" bool(false) bool(true)
Output for 5.4.16, 5.4.19
$2a$12$yj/5eacU/655A1cBxItVGevASjEHP47zD13wgPpPcn0N9FgS2xPzqstring(29) "$2a$12$yj/5eacU/655A1cBxItVGg" bool(false) bool(true)
Output for 5.4.18
$2a$12$mH4UwrH79hgtvT1OyeDv6.nNvr3sT2PNrfPPPhOYuUf7n88mB2Hm6string(29) "$2a$12$mH4UwrH79hgtvT1OyeDv6/" bool(false) bool(true)
Output for 5.4.15
$2a$12$hCYebXHEQNfVAnG46vu74OS23CK1yBEOC3zlJyDGk8J/dXSUMgHWCstring(29) "$2a$12$hCYebXHEQNfVAnG46vu74W" bool(false) bool(true)
Output for 5.3.9, 5.3.15, 5.3.17, 5.3.21, 5.3.23, 5.4.8, 5.4.14
$2a$12$cAuDv.Hgisbbs6hb3rDavuW2c9a/mF2CwCFm5lNdLcUxb2p/Hd4bystring(29) "$2a$12$cAuDv.Hgisbbs6hb3rDavw" bool(false) bool(true)
Output for 5.3.8, 5.3.13, 5.3.20, 5.4.13
$2a$12$7qU2Zc9zLnwyHuz.lD3sdOVP94VwTwp0vkqstsvVu6CY7YJ8nmPhystring(29) "$2a$12$7qU2Zc9zLnwyHuz.lD3sdT" bool(false) bool(true)
Output for 5.3.14, 5.4.4, 5.4.12
$2a$12$8jmdNgEjl/LAoNIVxdIt/.2nM8bi2byfbNGPayT3pDcLOzlud2RPCstring(29) "$2a$12$8jmdNgEjl/LAoNIVxdIt/I" bool(false) bool(true)
Output for 5.3.19, 5.4.11
$2a$12$ZPp4m.YI5VFE6xUXEgsW7uDdpQZhCuh.mtNLloca1LbodzDzu3OAGstring(29) "$2a$12$ZPp4m.YI5VFE6xUXEgsW73" bool(false) bool(true)
Output for 5.3.3, 5.3.7, 5.3.10, 5.4.10
$2a$12$eGBhYmjDqZBicuOVT7G1J.6jqDiPNl5E5aInl99dj34fTN5cFr2fOstring(29) "$2a$12$eGBhYmjDqZBicuOVT7G1J/" bool(false) bool(true)
Output for 5.3.4, 5.3.16, 5.3.22, 5.4.9
$2a$12$y2eWhTrGMyzaOg8TsWN.TOcJfm1RVEsHKgtf1rZswhNZZxUlFAHAWstring(29) "$2a$12$y2eWhTrGMyzaOg8TsWN.TP" bool(false) bool(true)
Output for 5.3.26, 5.4.7
$2a$12$PT6FOw7.IczEhWZa7dnl8usf4XVgXg5I5Sfcorq./yfl04t7e0MMKstring(29) "$2a$12$PT6FOw7.IczEhWZa7dnl87" bool(false) bool(true)
Output for 5.3.0, 5.4.6
$2a$12$wB2vmfMRfk95cGS8NU0loOpl0Db.q2l5i2BWpiVM.Iyuqm6xARPpestring(29) "$2a$12$wB2vmfMRfk95cGS8NU0loR" bool(false) bool(true)
Output for 5.3.11, 5.4.5
$2a$12$J86cZSXGpE3adZsUdaevKu9fk3oZlo6zwu0n71jNHo3AzUNm/zkK2string(29) "$2a$12$J86cZSXGpE3adZsUdaevK9" bool(false) bool(true)
Output for 5.4.2
$2a$12$14Qc3iXZTeqdccjo0bG9Lecjf9CxzcndXA0/KkDXqZTfOMZRDCte2string(29) "$2a$12$14Qc3iXZTeqdccjo0bG9Ln" bool(false) bool(true)
Output for 5.3.12, 5.4.1
$2a$12$QhXcPNFZX7gNBGklGrT.oebvHeVnA0NG/1gy1oPECde3WddC.ro9Sstring(29) "$2a$12$QhXcPNFZX7gNBGklGrT.ol" bool(false) bool(true)
Output for 5.3.29
$2a$12$r1obdjGB1dghbl2yru6m6uF1a5aUHex.i.3f2xF3Rmm9m8c7Z1BAmstring(29) "$2a$12$r1obdjGB1dghbl2yru6m62" bool(false) bool(true)
Output for 5.3.27
$2a$12$dYwoVdMAHwjDLZWy6rlHCuJ8m9Z3Vejb5bvAkPkHTHMEHNg.cn2uOstring(29) "$2a$12$dYwoVdMAHwjDLZWy6rlHC1" bool(false) bool(true)
Output for 5.3.1, 5.3.24
$2a$12$EAQQDcD3ewRe3yhodilQjukWyytSm8xmx42F7GEbTaXdszUdGIeJSstring(29) "$2a$12$EAQQDcD3ewRe3yhodilQj8" bool(false) bool(true)
Output for 5.3.18
$2a$12$5mIY5OWlf0ML0u1/3KJd1.alKkAb8td9wFgEbCmw5EqcFQi.TdOWCstring(29) "$2a$12$5mIY5OWlf0ML0u1/3KJd1." bool(false) bool(true)
Output for 5.3.5
$2a$12$.xrOK/QPQL55XvdZgcNxNO9yMeKIxQFLue1V20VHuslSd1tZxnjF6string(29) "$2a$12$.xrOK/QPQL55XvdZgcNxNR" bool(false) bool(true)
Output for 5.3.2
$2a$12$vnEOJFiMiZay0CeuXWHTGOMIYUWeap/TphBzMTU9XNvydEXnMJ49qstring(29) "$2a$12$vnEOJFiMiZay0CeuXWHTGP" bool(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/rZ5Qv 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/rZ5Qv on line 3
Process exited with code 139.

preferences:
142.52 ms | 402 KiB | 175 Q