title: PHP brute force password generator
body: <p>I want to be able to input a number and get a password, built from a string or unique characters. So if I have two characters in the string : $string = "AB"; these are the desired results :</p>
  
  <pre><code>-in-|-out-
   0  |  A
   1  |  B
   2  | AA
   3  | AB
   4  | BA
   5  | BB
   6  | AAA
   7  | AAB
   8  | ABA
   9  | ABB
   10 | BBB
  </code></pre>
  
  <p>And so on. Here is my current code :</p>
  
  <pre><code>for($i = 1; $i &lt; 100; $i++)
  {
      echo createString ($i, "AB")."&lt;br/&gt;";
  }
  function createString ($id, $chars) // THE ISSUE &lt;---
  {
      $length = getLength($id, $chars);
      //echo "LENGTH : ".$length."&lt;br/&gt;&lt;br/&gt;";
      $string = "";
      for($i = 0; $i &lt; $length; $i++)
      {
          $a = round(($id - 1)/pow($length, $i)); // THE ISSUE &lt;-----
          $local = local($a, strlen($chars));
          $string = $chars{$local - 1}." : ".$string;
      }
      return $string;
  }
  function local ($num, $max)
  {
      $num += $max;
      while($num &gt; $max)
      {
          $num -= $max;
      }
      return $num;
  }
  /*
   get the length of the output by inputing the "in" and defining the possible characters
  */
  function getLength ($id, $chars)
  {
      $charNUM = 1;
      $LR = -1;
      $HR = 0;
      while(true)
      {
          $LR = $HR;
          $HR = pow(strlen($chars), $charNUM) + $LR;
          $LR += 1;
          //echo $LR." : ".$HR." : ".$charNUM."&lt;br/&gt;";
          if($id &gt;= $LR &amp;&amp; $id &lt;= $HR)
          {
              return $charNUM;
          }
          if($id &lt; $LR)
          {
              return false;
          }
          $charNUM ++;
      }
  }
  </code></pre>
  
  <p>That outputs :</p>
  
  <pre><code>B : 
  A : 
  A : B : 
  B : A : 
  B : B : 
  A : A : 
  A : B : B : 
  A : B : A : 
  A : A : B : 
  A : A : A : 
  A : A : B : 
  A : B : A : 
  A : B : B : 
  A : B : A : 
  B : A : B : B : 
  B : A : B : A : 
  B : A : B : B : 
  B : A : B : A : 
  B : A : A : B : 
  B : A : A : A : 
  B : A : A : B : 
  B : A : A : A : 
  B : A : B : B : 
  B : A : B : A : 
  B : B : B : B : 
  B : B : B : A : 
  B : B : A : B : 
  B : B : A : A : 
  B : B : A : B : 
  B : B : A : A : 
  B : B : A : B : B : 
  B : B : A : B : A : 
  B : B : A : B : B : 
  B : B : A : A : A : 
  B : B : A : A : B : 
  B : B : A : A : A : 
  B : B : A : A : B : 
  B : B : A : A : A : 
  B : B : B : B : B : 
  B : B : B : B : A : 
  B : B : B : B : B :
  </code></pre>
  
  <p>And so on. But it has repeats. I am having issues with the function createString(). I want to access a password somewhere down a brute force password table without having it pre-computed. I don't want a pre-computed array and just access a point of it.</p>