![]() |
Re: Brute Force Algorithmus
Der Algorithmus konvertiert die Eingabezahl quasi in ein Ziffernsystem, wobei die "Ziffern" hier jedes Zeichen aus einem vorgegebenen String sein können.
Wenn du diese Funktion nimmst:
Delphi-Quellcode:
Damit kannst du damit eine Zahl in die oktale, dezimalzahle oder auch hexadezimale Darstellung konvertieren:
function NumberToChars(Value: Cardinal; const DigitSet: string): string;
var dsl: Cardinal; begin dsl := Length(DigitSet); Result := ''; repeat Result := DigitSet[Value mod dsl + 1] + Result; Value := Value div dsl; until Value = 0; end;
Delphi-Quellcode:
oder eben auch:
Okta := NumberToChars(Number, '01234567');
Dezi := NumberToChars(Number, '0123456789'); Hexa := NumberToChars(Number, '0123456789ABCDEF');
Delphi-Quellcode:
Normalerweise sollte für 10*97+11 der String 'AB' rauskommen (97=Länge des Zeichenvorrats).
function BruteForce(Nb: integer): string;
begin Result := NumberToChars(Cardinal(Nb), '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz°!"§$%&/()=?`´\}][{^+*~''#_:.,;<>|@'); end; |
Re: Brute Force Algorithmus
Ah, danke für die Erklärung. Ich werde es dann mal testen.
|
Re: Brute Force Algorithmus
Hallo Luckie
Zitat:
Wertigkeit der Operatoren Operator Rangfolge @, not Erste (höchste) *, /, div, mod, and, shl, shr, as Zweite +, -, or, xor Dritte -----------------<<<!!!! =, <>, <, >, <=, >=, in, is Vierte (niedrigste) mfg wo |
Re: Brute Force Algorithmus
Hab' jetzt gerade noch einen Fehler im Design festgestellt ... da bei dir das 'a' quasi als Null fungiert, kannst du damit wirklich nicht die Zeichenkette 'ab' erzeugen, da der Algorithmus schon nach 'b' abbricht. Da müsste man die Routine etwas abändern.
|
Re: Brute Force Algorithmus
Und wie müsste man das dann ändern?
|
Re: Brute Force Algorithmus
Hmmm ... :gruebel: das war nicht trivial 8)
Delphi-Quellcode:
In diesem Beispiel kommt für 28 'ab' heraus und für 53 'ba'.
function BruteForce(Nb: Cardinal): string;
const ch = 'abcdefghijklmnopqrstuvwxyz'; begin Result := ''; while Nb > Length(ch) do begin dec(Nb); Result := ch[Nb mod Length(ch) + 1] + Result; Nb := Nb div Length(ch); end; if Nb > 0 then Result := ch[Nb] + Result; end; |
Re: Brute Force Algorithmus
Du bist spitze. :P Ich habe mir da nämlich gerade einen dran abgebrochen. :roll:
|
Re: Brute Force Algorithmus
Ich bin immer noch mit dem BruteForce Algorithmus zugange:
Delphi-Quellcode:
Man kann jetzt also die Zeichen übergeben aus denen alle möglichen Zeichenfolgen zu bilden sind. Ist aber quasi nur etwas Kosmetik. Kann man das jetzt auch irgendwie so machen, dass er ab einer bestimmten Mindestlänge anfängt? Also man gibt 3 vor und dann fängt er nicht bei "a" an, sondern bei "aaa".
function BruteForce(Nb: Integer; Chars: String): string;
begin Result := ''; while Nb > Length(Chars) do begin dec(Nb); Result := Chars[Nb mod Length(Chars) + 1] + Result; Nb := Nb div Length(Chars); end; if Nb > 0 then Result := Chars[Nb] + Result; end; Für was soll eigentlich Nb stehe? :gruebel: |
Re: Brute Force Algorithmus
Ich muss das noch mal noch oben holen. ;)
|
Re: Brute Force Algorithmus
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz