3v4l.org

run code in 300+ PHP versions simultaneously
<?php $password = 'dupa123'; $salt = 'abcabcabcabcabcabcabca'; $cost = 12; $hashWithManualSalt = password_hash($password, PASSWORD_BCRYPT, ['salt' => $salt, 'cost' => 12]); $hashWithAutomaticSalt = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]); echo 'deprecated way (should be valid): ', password_hash('dupa123', PASSWORD_BCRYPT, ['salt' => $salt, 'cost' => 12]) === $hashWithManualSalt ? 'valid' : 'invalid', PHP_EOL; echo 'deprecated way (should be invalid): ', password_hash('dupa321', PASSWORD_BCRYPT, ['salt' => $salt, 'cost' => 12]) === $hashWithManualSalt ? 'valid' : 'invalid', PHP_EOL; echo 'new way (should be valid): ', password_verify('dupa123', $hashWithAutomaticSalt) ? 'valid' : 'invalid', PHP_EOL; echo 'new way (should be invalid): ', password_verify('dupa321', $hashWithAutomaticSalt) ? 'valid' : 'invalid', PHP_EOL;
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 29
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 44
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 55
Branch analysis from position: 53
1 jumps found. (Code = 42) Position 1 = 56
Branch analysis from position: 56
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 66
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 67
Branch analysis from position: 67
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 55
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 66
Branch analysis from position: 64
Branch analysis from position: 66
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 55
Branch analysis from position: 53
Branch analysis from position: 55
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 44
Branch analysis from position: 42
Branch analysis from position: 44
filename:       /in/2gka1
function name:  (null)
number of ops:  70
compiled vars:  !0 = $password, !1 = $salt, !2 = $cost, !3 = $hashWithManualSalt, !4 = $hashWithAutomaticSalt
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, 'dupa123'
    4     1        ASSIGN                                                   !1, 'abcabcabcabcabcabcabca'
    5     2        ASSIGN                                                   !2, 12
    7     3        INIT_FCALL                                               'password_hash'
          4        SEND_VAR                                                 !0
          5        SEND_VAL                                                 '2y'
          6        INIT_ARRAY                                       ~8      !1, 'salt'
          7        ADD_ARRAY_ELEMENT                                ~8      12, 'cost'
          8        SEND_VAL                                                 ~8
          9        DO_ICALL                                         $9      
         10        ASSIGN                                                   !3, $9
    8    11        INIT_FCALL                                               'password_hash'
         12        SEND_VAR                                                 !0
         13        SEND_VAL                                                 '2y'
         14        SEND_VAL                                                 <array>
         15        DO_ICALL                                         $11     
         16        ASSIGN                                                   !4, $11
   10    17        ECHO                                                     'deprecated+way+%28should+be+valid%29%3A+'
         18        INIT_FCALL                                               'password_hash'
         19        SEND_VAL                                                 'dupa123'
         20        SEND_VAL                                                 '2y'
         21        INIT_ARRAY                                       ~13     !1, 'salt'
         22        ADD_ARRAY_ELEMENT                                ~13     12, 'cost'
         23        SEND_VAL                                                 ~13
         24        DO_ICALL                                         $14     
         25        IS_IDENTICAL                                             !3, $14
         26      > JMPZ                                                     ~15, ->29
         27    >   QM_ASSIGN                                        ~16     'valid'
         28      > JMP                                                      ->30
         29    >   QM_ASSIGN                                        ~16     'invalid'
         30    >   ECHO                                                     ~16
         31        ECHO                                                     '%0A'
   11    32        ECHO                                                     'deprecated+way+%28should+be+invalid%29%3A+'
         33        INIT_FCALL                                               'password_hash'
         34        SEND_VAL                                                 'dupa321'
         35        SEND_VAL                                                 '2y'
         36        INIT_ARRAY                                       ~17     !1, 'salt'
         37        ADD_ARRAY_ELEMENT                                ~17     12, 'cost'
         38        SEND_VAL                                                 ~17
         39        DO_ICALL                                         $18     
         40        IS_IDENTICAL                                             !3, $18
         41      > JMPZ                                                     ~19, ->44
         42    >   QM_ASSIGN                                        ~20     'valid'
         43      > JMP                                                      ->45
         44    >   QM_ASSIGN                                        ~20     'invalid'
         45    >   ECHO                                                     ~20
         46        ECHO                                                     '%0A'
   13    47        ECHO                                                     'new+way+%28should+be+valid%29%3A+'
         48        INIT_FCALL                                               'password_verify'
         49        SEND_VAL                                                 'dupa123'
         50        SEND_VAR                                                 !4
         51        DO_ICALL                                         $21     
         52      > JMPZ                                                     $21, ->55
         53    >   QM_ASSIGN                                        ~22     'valid'
         54      > JMP                                                      ->56
         55    >   QM_ASSIGN                                        ~22     'invalid'
         56    >   ECHO                                                     ~22
         57        ECHO                                                     '%0A'
   14    58        ECHO                                                     'new+way+%28should+be+invalid%29%3A+'
         59        INIT_FCALL                                               'password_verify'
         60        SEND_VAL                                                 'dupa321'
         61        SEND_VAR                                                 !4
         62        DO_ICALL                                         $23     
         63      > JMPZ                                                     $23, ->66
         64    >   QM_ASSIGN                                        ~24     'valid'
         65      > JMP                                                      ->67
         66    >   QM_ASSIGN                                        ~24     'invalid'
         67    >   ECHO                                                     ~24
         68        ECHO                                                     '%0A'
   15    69      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
143.5 ms | 1400 KiB | 17 Q