3v4l.org

run code in 300+ PHP versions simultaneously
<?php //Enter your code here, enjoy! function hmac($algo,$data,$passwd){ /* md5 and sha1 only */ $algo=strtolower($algo); $p=array('md5'=>'H32','sha1'=>'H40'); if(strlen($passwd)>64) $passwd=pack($p[$algo],$algo($passwd)); if(strlen($passwd)<64) $passwd=str_pad($passwd,64,chr(0)); $ipad=substr($passwd,0,64) ^ str_repeat(chr(0x36),64); $opad=substr($passwd,0,64) ^ str_repeat(chr(0x5C),64); return($algo($opad.pack($p[$algo],$algo($ipad.$data)))); } # XXX ePay.bg URL (https://devep2.datamax.bg/ep2/epay2_demo/ if POST to DEMO system) $submit_url = 'https://devep2.datamax.bg/ep2/epay2_demo/'; # XXX Secret word with which merchant make CHECKSUM on the ENCODED packet $secret = 'secret'; $min = 'D544248794'; $invoice = 1234; # XXX Invoice $sum = '22.80'; # XXX Ammount $exp_date = '01.08.2020'; # XXX Expiration date $descr = 'Test'; # XXX Description $data = <<<DATA MIN={$min} INVOICE={$invoice} AMOUNT={$sum} EXP_TIME={$exp_date} DESCR={$descr} DATA; # XXX Packet: # (MIN or EMAIL)= REQUIRED # INVOICE= REQUIRED # AMOUNT= REQUIRED # EXP_TIME= REQUIRED # DESCR= OPTIONAL $ENCODED = base64_encode($data); $CHECKSUM = hmac('sha1', $ENCODED, $secret); # XXX SHA-1 algorithm REQUIRED echo <<<HTML <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> </head> <BODY TEXT=#000000 BGCOLOR=#FFFFFF> <BR> <BR> <CENTER><h1>DEMO</h1> <TABLE border=1> <form action="{$submit_url}" method=POST> <input type=hidden name=PAGE value="paylogin"> <input type=hidden name=ENCODED value="{$ENCODED}"> <input type=hidden name=CHECKSUM value="{$CHECKSUM}"> <input type=hidden name=URL_OK value="SET_URL_OK_IF_NEEDED"> <input type=hidden name=URL_CANCEL value="SET_URL_CANCEL_IF_NEEDED"> <TR> <TD>ÌÈÍ: {$min}</TD> </TR> <TR> <TD>Ôàêòóðà íîìåð: {$invoice}</TD> </TR> <TR> <TD>Îïèñàíèå: {$descr}</TD> </TR> <TR> <TD> <xmp> Ïðîäóêòè êîë. åä.öåíà öåíà ------------------------------------------------ ïðîäóêò1 3 2.50 7.50 ïðîäóêò2 1 3.50 3.50 ïðîäóêò3 2 4.00 8.00 ------------------------------------------------ îáùî 19.00 ÄÄÑ 3.80 Âñè÷êî {$sum} </xmp> </TD> </TR> <TR> <TD>Ñóìà: {$sum}</TD> </TR> </table> <table width=100%> <TR align=center> <TD><INPUT type=submit></TD> </TR> </TABLE> </form> </BODY> </HTML> HTML; ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/O7E2U
function name:  (null)
number of ops:  47
compiled vars:  !0 = $submit_url, !1 = $secret, !2 = $min, !3 = $invoice, !4 = $sum, !5 = $exp_date, !6 = $descr, !7 = $data, !8 = $ENCODED, !9 = $CHECKSUM
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E >   ASSIGN                                                   !0, 'https%3A%2F%2Fdevep2.datamax.bg%2Fep2%2Fepay2_demo%2F'
   20     1        ASSIGN                                                   !1, 'secret'
   22     2        ASSIGN                                                   !2, 'D544248794'
   23     3        ASSIGN                                                   !3, 1234
   24     4        ASSIGN                                                   !4, '22.80'
   25     5        ASSIGN                                                   !5, '01.08.2020'
   26     6        ASSIGN                                                   !6, 'Test'
   29     7        ROPE_INIT                                    10  ~18     'MIN%3D'
          8        ROPE_ADD                                      1  ~18     ~18, !2
          9        ROPE_ADD                                      2  ~18     ~18, '%0AINVOICE%3D'
   30    10        ROPE_ADD                                      3  ~18     ~18, !3
         11        ROPE_ADD                                      4  ~18     ~18, '%0AAMOUNT%3D'
   31    12        ROPE_ADD                                      5  ~18     ~18, !4
         13        ROPE_ADD                                      6  ~18     ~18, '%0AEXP_TIME%3D'
   32    14        ROPE_ADD                                      7  ~18     ~18, !5
         15        ROPE_ADD                                      8  ~18     ~18, '%0ADESCR%3D'
   33    16        ROPE_END                                      9  ~17     ~18, !6
   28    17        ASSIGN                                                   !7, ~17
   43    18        INIT_FCALL                                               'base64_encode'
         19        SEND_VAR                                                 !7
         20        DO_ICALL                                         $24     
         21        ASSIGN                                                   !8, $24
   44    22        INIT_FCALL                                               'hmac'
         23        SEND_VAL                                                 'sha1'
         24        SEND_VAR                                                 !8
         25        SEND_VAR                                                 !1
         26        DO_FCALL                                      0  $26     
         27        ASSIGN                                                   !9, $26
   47    28        ROPE_INIT                                    17  ~29     '%3CHTML%3E%0A%3Chead%3E%0A++++%3Cmeta+http-equiv%3D%22content-type%22+content%3D%22text%2Fhtml%3B+charset%3Dwindows-1251%22%3E%0A%3C%2Fhead%3E%0A%3CBODY+TEXT%3D%23000000+BGCOLOR%3D%23FFFFFF%3E%0A%3CBR%3E%0A%3CBR%3E%0A%3CCENTER%3E%3Ch1%3EDEMO%3C%2Fh1%3E%0A%3CTABLE+border%3D1%3E%0A%0A%3Cform+action%3D%22'
   57    29        ROPE_ADD                                      1  ~29     ~29, !0
         30        ROPE_ADD                                      2  ~29     ~29, '%22+method%3DPOST%3E%0A%3Cinput+type%3Dhidden+name%3DPAGE+value%3D%22paylogin%22%3E%0A%3Cinput+type%3Dhidden+name%3DENCODED+value%3D%22'
   59    31        ROPE_ADD                                      3  ~29     ~29, !8
         32        ROPE_ADD                                      4  ~29     ~29, '%22%3E%0A%3Cinput+type%3Dhidden+name%3DCHECKSUM+value%3D%22'
   60    33        ROPE_ADD                                      5  ~29     ~29, !9
         34        ROPE_ADD                                      6  ~29     ~29, '%22%3E%0A%3Cinput+type%3Dhidden+name%3DURL_OK+value%3D%22SET_URL_OK_IF_NEEDED%22%3E%0A%3Cinput+type%3Dhidden+name%3DURL_CANCEL+value%3D%22SET_URL_CANCEL_IF_NEEDED%22%3E%0A%0A%3CTR%3E%0A%3CTD%3E%C3%8C%C3%88%C3%8D%3A+'
   65    35        ROPE_ADD                                      7  ~29     ~29, !2
         36        ROPE_ADD                                      8  ~29     ~29, '%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%3CTR%3E%0A%3CTD%3E%C3%94%C3%A0%C3%AA%C3%B2%C3%B3%C3%B0%C3%A0+%C3%AD%C3%AE%C3%AC%C3%A5%C3%B0%3A+'
   69    37        ROPE_ADD                                      9  ~29     ~29, !3
         38        ROPE_ADD                                     10  ~29     ~29, '%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%3CTR%3E%0A%3CTD%3E%C3%8E%C3%AF%C3%A8%C3%B1%C3%A0%C3%AD%C3%A8%C3%A5%3A+'
   73    39        ROPE_ADD                                     11  ~29     ~29, !6
         40        ROPE_ADD                                     12  ~29     ~29, '%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%3CTR%3E%0A%3CTD%3E%0A%0A%3Cxmp%3E%0A%C3%8F%C3%B0%C3%AE%C3%A4%C3%B3%C3%AA%C3%B2%C3%A8++++++++++++++++++++%C3%AA%C3%AE%C3%AB.++%C3%A5%C3%A4.%C3%B6%C3%A5%C3%AD%C3%A0+++%C3%B6%C3%A5%C3%AD%C3%A0%0A------------------------------------------------%0A%C3%AF%C3%B0%C3%AE%C3%A4%C3%B3%C3%AA%C3%B21+++++++++++++++++++++3++++++2.50++++7.50%0A%C3%AF%C3%B0%C3%AE%C3%A4%C3%B3%C3%AA%C3%B22+++++++++++++++++++++1++++++3.50++++3.50%0A%C3%AF%C3%B0%C3%AE%C3%A4%C3%B3%C3%AA%C3%B23+++++++++++++++++++++2++++++4.00++++8.00%0A------------------------------------------------%0A%C3%AE%C3%A1%C3%B9%C3%AE+++19.00%0A%C3%84%C3%84%C3%91++++3.80%0A%C3%82%C3%B1%C3%A8%C3%B7%C3%AA%C3%AE+++'
   88    41        ROPE_ADD                                     13  ~29     ~29, !4
         42        ROPE_ADD                                     14  ~29     ~29, '%0A%3C%2Fxmp%3E%0A%0A%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%3CTR%3E%0A%3CTD%3E%C3%91%C3%B3%C3%AC%C3%A0%3A+'
   95    43        ROPE_ADD                                     15  ~29     ~29, !4
         44        ROPE_END                                     16  ~28     ~29, '%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%0A%3C%2Ftable%3E%0A%0A%3Ctable+width%3D100%25%3E%0A%3CTR+align%3Dcenter%3E%0A%3CTD%3E%3CINPUT+type%3Dsubmit%3E%3C%2FTD%3E%0A%3C%2FTR%3E%0A%0A%0A%3C%2FTABLE%3E%0A%0A%3C%2Fform%3E%0A%3C%2FBODY%3E%0A%3C%2FHTML%3E'
         45        ECHO                                                     ~28
  113    46      > RETURN                                                   1

Function hmac:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 20
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 29
Branch analysis from position: 23
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 29
Branch analysis from position: 20
filename:       /in/O7E2U
function name:  hmac
number of ops:  66
compiled vars:  !0 = $algo, !1 = $data, !2 = $passwd, !3 = $p, !4 = $ipad, !5 = $opad
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
    6     3        INIT_FCALL                                               'strtolower'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $6      
          6        ASSIGN                                                   !0, $6
    7     7        ASSIGN                                                   !3, <array>
    8     8        STRLEN                                           ~9      !2
          9        IS_SMALLER                                               64, ~9
         10      > JMPZ                                                     ~10, ->20
         11    >   INIT_FCALL                                               'pack'
         12        FETCH_DIM_R                                      ~11     !3, !0
         13        SEND_VAL                                                 ~11
         14        INIT_DYNAMIC_CALL                                        !0
         15        SEND_VAR_EX                                              !2
         16        DO_FCALL                                      0  $12     
         17        SEND_VAR                                                 $12
         18        DO_ICALL                                         $13     
         19        ASSIGN                                                   !2, $13
    9    20    >   STRLEN                                           ~15     !2
         21        IS_SMALLER                                               ~15, 64
         22      > JMPZ                                                     ~16, ->29
         23    >   INIT_FCALL                                               'str_pad'
         24        SEND_VAR                                                 !2
         25        SEND_VAL                                                 64
         26        SEND_VAL                                                 '%00'
         27        DO_ICALL                                         $17     
         28        ASSIGN                                                   !2, $17
   11    29    >   INIT_FCALL                                               'substr'
         30        SEND_VAR                                                 !2
         31        SEND_VAL                                                 0
         32        SEND_VAL                                                 64
         33        DO_ICALL                                         $19     
         34        INIT_FCALL                                               'str_repeat'
         35        SEND_VAL                                                 '6'
         36        SEND_VAL                                                 64
         37        DO_ICALL                                         $20     
         38        BW_XOR                                           ~21     $19, $20
         39        ASSIGN                                                   !4, ~21
   12    40        INIT_FCALL                                               'substr'
         41        SEND_VAR                                                 !2
         42        SEND_VAL                                                 0
         43        SEND_VAL                                                 64
         44        DO_ICALL                                         $23     
         45        INIT_FCALL                                               'str_repeat'
         46        SEND_VAL                                                 '%5C'
         47        SEND_VAL                                                 64
         48        DO_ICALL                                         $24     
         49        BW_XOR                                           ~25     $23, $24
         50        ASSIGN                                                   !5, ~25
   14    51        INIT_DYNAMIC_CALL                                        !0
         52        INIT_FCALL                                               'pack'
         53        FETCH_DIM_R                                      ~27     !3, !0
         54        SEND_VAL                                                 ~27
         55        INIT_DYNAMIC_CALL                                        !0
         56        CONCAT                                           ~28     !4, !1
         57        SEND_VAL_EX                                              ~28
         58        DO_FCALL                                      0  $29     
         59        SEND_VAR                                                 $29
         60        DO_ICALL                                         $30     
         61        CONCAT                                           ~31     !5, $30
         62        SEND_VAL_EX                                              ~31
         63        DO_FCALL                                      0  $32     
         64      > RETURN                                                   $32
   15    65*     > RETURN                                                   null

End of function hmac

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
159 ms | 1402 KiB | 26 Q