【发布时间】:2011-10-25 06:26:17
【问题描述】:
我希望能够输入一个数字并获得一个由字符串或唯一字符构建的密码。因此,如果我在字符串中有两个字符: $string = "AB";这些是期望的结果:
-in-|-out-
0 | A
1 | B
2 | AA
3 | AB
4 | BA
5 | BB
6 | AAA
7 | AAB
8 | ABA
9 | ABB
10 | BBB
等等。这是我当前的代码:
for($i = 1; $i < 100; $i++)
{
echo createString ($i, "AB")."<br/>";
}
function createString ($id, $chars) // THE ISSUE <---
{
$length = getLength($id, $chars);
//echo "LENGTH : ".$length."<br/><br/>";
$string = "";
for($i = 0; $i < $length; $i++)
{
$a = round(($id - 1)/pow($length, $i)); // THE ISSUE <-----
$local = local($a, strlen($chars));
$string = $chars{$local - 1}." : ".$string;
}
return $string;
}
function local ($num, $max)
{
$num += $max;
while($num > $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."<br/>";
if($id >= $LR && $id <= $HR)
{
return $charNUM;
}
if($id < $LR)
{
return false;
}
$charNUM ++;
}
}
输出:
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 :
等等。但它有重复。我遇到了函数 createString() 的问题。我想在没有预先计算的情况下在蛮力密码表的某个地方访问密码。我不想要一个预先计算好的数组,只访问它的一个点。
【问题讨论】:
-
不是这样重复,但它返回相同的想法,例如:AAA 和 AAA,AAA = AAA
-
我说得对吗:您想在通过字符串定义数字的系统中呈现数字。所以你的系统的基础是字符串的长度和字符串中第 i 个位置的字符的第 i 个数字?
-
就是这样。在我有标签的代码中 //
-
您应该发布您的解决方案作为答案并接受它。
-
你的解决方案给了我(ideone.com/Fh4tR):
A, B, BA, BB, AA, AB, ABA, ABB, AAA, BAB, BBA, BBB ...所以它似乎不适合你想要的输出。
标签: php passwords generator brute-force