3v4l.org

run code in 300+ PHP versions simultaneously
<?php $val = /*16777215 - */302; $a = myencrypt($val); echo 'a: '. $a . '<br/>'; echo mydecrypt($a) . ' should equal ' . $val; $b = myencrypt($val+1); echo 'b: '. $b . '<br/>'; echo mydecrypt($b) . ' should equal ' . $val+1; function myencrypt($data){ $data = base_convert($data, 10, 36); //$data = str_pad($data, 8, '0', STR_PAD_LEFT); $data = openssl_encrypt( $data, 'aes-128-ctr', 'key', 0, openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-ctr')) ); $data = str_replace('=', '', base64_encode($data)); return $data; } function mydecrypt($data) { if ($base64_safe) $data = base64_decode($data.'=='); $data = openssl_decrypt( $data, 'aes-128-ctr', 'key', 0, $iv); $data = base_convert($data, 36, 10); return $data; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/0YPJm
function name:  (null)
number of ops:  30
compiled vars:  !0 = $val, !1 = $a, !2 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, 302
    4     1        INIT_FCALL_BY_NAME                                       'myencrypt'
          2        SEND_VAR_EX                                              !0
          3        DO_FCALL                                      0  $4      
          4        ASSIGN                                                   !1, $4
    5     5        CONCAT                                           ~6      'a%3A+', !1
          6        CONCAT                                           ~7      ~6, '%3Cbr%2F%3E'
          7        ECHO                                                     ~7
    6     8        INIT_FCALL_BY_NAME                                       'mydecrypt'
          9        SEND_VAR_EX                                              !1
         10        DO_FCALL                                      0  $8      
         11        CONCAT                                           ~9      $8, '+should+equal+'
         12        CONCAT                                           ~10     ~9, !0
         13        ECHO                                                     ~10
    8    14        INIT_FCALL_BY_NAME                                       'myencrypt'
         15        ADD                                              ~11     !0, 1
         16        SEND_VAL_EX                                              ~11
         17        DO_FCALL                                      0  $12     
         18        ASSIGN                                                   !2, $12
    9    19        CONCAT                                           ~14     'b%3A+', !2
         20        CONCAT                                           ~15     ~14, '%3Cbr%2F%3E'
         21        ECHO                                                     ~15
   10    22        INIT_FCALL_BY_NAME                                       'mydecrypt'
         23        SEND_VAR_EX                                              !2
         24        DO_FCALL                                      0  $16     
         25        CONCAT                                           ~17     $16, '+should+equal+'
         26        ADD                                              ~18     !0, 1
         27        CONCAT                                           ~19     ~17, ~18
         28        ECHO                                                     ~19
   30    29      > RETURN                                                   1

Function myencrypt:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/0YPJm
function name:  myencrypt
number of ops:  32
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E >   RECV                                             !0      
   14     1        INIT_FCALL                                               'base_convert'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 10
          4        SEND_VAL                                                 36
          5        DO_ICALL                                         $1      
          6        ASSIGN                                                   !0, $1
   17     7        INIT_FCALL_BY_NAME                                       'openssl_encrypt'
          8        SEND_VAR_EX                                              !0
          9        SEND_VAL_EX                                              'aes-128-ctr'
         10        SEND_VAL_EX                                              'key'
         11        SEND_VAL_EX                                              0
         12        INIT_FCALL_BY_NAME                                       'openssl_random_pseudo_bytes'
         13        INIT_FCALL_BY_NAME                                       'openssl_cipher_iv_length'
         14        SEND_VAL_EX                                              'aes-128-ctr'
         15        DO_FCALL                                      0  $3      
         16        SEND_VAR_NO_REF_EX                                       $3
         17        DO_FCALL                                      0  $4      
         18        SEND_VAR_NO_REF_EX                                       $4
         19        DO_FCALL                                      0  $5      
         20        ASSIGN                                                   !0, $5
   19    21        INIT_FCALL                                               'str_replace'
         22        SEND_VAL                                                 '%3D'
         23        SEND_VAL                                                 ''
         24        INIT_FCALL                                               'base64_encode'
         25        SEND_VAR                                                 !0
         26        DO_ICALL                                         $7      
         27        SEND_VAR                                                 $7
         28        DO_ICALL                                         $8      
         29        ASSIGN                                                   !0, $8
   20    30      > RETURN                                                   !0
   21    31*     > RETURN                                                   null

End of function myencrypt

Function mydecrypt:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 2, Position 2 = 7
Branch analysis from position: 2
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
filename:       /in/0YPJm
function name:  mydecrypt
number of ops:  23
compiled vars:  !0 = $data, !1 = $base64_safe, !2 = $iv
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   23     0  E >   RECV                                             !0      
   24     1      > JMPZ                                                     !1, ->7
          2    >   INIT_FCALL                                               'base64_decode'
          3        CONCAT                                           ~3      !0, '%3D%3D'
          4        SEND_VAL                                                 ~3
          5        DO_ICALL                                         $4      
          6        ASSIGN                                                   !0, $4
   26     7    >   INIT_FCALL_BY_NAME                                       'openssl_decrypt'
          8        SEND_VAR_EX                                              !0
          9        SEND_VAL_EX                                              'aes-128-ctr'
         10        SEND_VAL_EX                                              'key'
         11        SEND_VAL_EX                                              0
         12        SEND_VAR_EX                                              !2
         13        DO_FCALL                                      0  $6      
         14        ASSIGN                                                   !0, $6
   28    15        INIT_FCALL                                               'base_convert'
         16        SEND_VAR                                                 !0
         17        SEND_VAL                                                 36
         18        SEND_VAL                                                 10
         19        DO_ICALL                                         $8      
         20        ASSIGN                                                   !0, $8
   29    21      > RETURN                                                   !0
   30    22*     > RETURN                                                   null

End of function mydecrypt

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
179.29 ms | 1404 KiB | 21 Q