Я в настоящее время ищу алгоритм bruteforce, и я просто не могу найти хороший/простой.
Итак, я попытался написать один сам, но я потерпел неудачу. Я слишком плохо разбираюсь в математике или что-то еще. :/
Мне не нужен алгоритм на определенном языке программирования, если он у вас есть, я, возможно, переношу его на нужный мне язык.
Я в основном ищу что-то простое:
(моя попытка написать функцию BruteForce)Как написать алгоритм грубой силы?
function BruteForce(chars,minLen,maxLen)
curCharArray = {}
for i=1, maxLen do
curCharArray[i] = 0
end
generatedString = ""
for currentLength = minLen, maxLen, 1 do
curCharArray[currentLength] = 1
Pos=currentLength
while Pos>0 do
if string.len(generatedString) < 1 then
generatedString= string.sub(chars,curCharArray[Pos],curCharArray[Pos])
else
generatedString= string.sub(generatedString,1,Pos-1) .. string.sub(chars,curCharArray[Pos],curCharArray[Pos])
end
print(generatedString)
curCharArray[Pos] = curCharArray[Pos]+1
Pos = currentLength
while curCharArray[Pos]==string.len(chars)+1 do
curCharArray[Pos]=1
Pos = Pos-1
end
end
end
end
BruteForceAttack("abc",2,3)
это написано в Lua, вы можете запустить код на сайте здесь: http://www.lua.org/cgi-bin/demo выход:
a
ab
ac
a
ab
ac
a
aa
ab
ac
b
ba
bb
bc
c
ca
cb
cc
cca
ccb
ccc
ca
caa
cab
cac
cb
cba
cbb
cbc
cc
cca
ccb
ccc
a
aa
aab
aac
aa
aaa
aab
aac
ab
aba
abb
abc
ac
aca
acb
acc
b
ba
bab
bac
ba
baa
bab
bac
bb
bba
bbb
bbc
bc
bca
bcb
bcc
c
ca
cab
cac
ca
caa
cab
cac
cb
cba
cbb
cbc
cc
cca
ccb
ccc
Как вы можете увидеть некоторые выходы одинаковы, а минимальная длина не рассматривается. Кроме того, порядок неправильный. Я хотел выход быть:
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
aac
aba
abb
abc
aca
acb
acc
baa
bab
bac
bba
bbb
bbc
bca
bcb
bcc
caa
cab
cac
cba
cbb
cbc
cca
ccb
ccc
Вы не сказали, что вы жестоко форсируете. – pjs
@pjs Я просто ищу алгоритм, который, как мне кажется, известен как «грубая сила». – Forivin
@Forivin: Думаю, вам следует пояснить, что вы выполняете все 2-3 буквенные комбинации «abc», где порядок не имеет значения. –