Forum: Software-Projekte der Mitglieder
by negaH,
31. Aug 2005
Das "kryptische" Resultat der Verschlüsselung nennt man "Binär". Im Grunde ist das reine Binärformat absolut ungeeignet um es in Labels/Memos etc. anzuzeigen. Deshalb konvertiert man dieses Format normalerweise in ein anderes textbasiertes Format, zb. die HEXadeziamle Darstellung oder morderner in das Internet MIME Base 64 Format.
In eine Datei kannst du Binärdaten aber denoch verlustfrei...
Forum: Software-Projekte der Mitglieder
by negaH,
9. Dez 2004
Tja die Statistik mit den Durchschnittswerten !?
Nachfolgende Random Funktion ist sogar noch besser und schneller und liefert den Perfekten Durchschnitt von 0.5 !!
var
Counter: Byte = 0;
function BestRandom: Boolean;
begin
Result := Odd(Counter);
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Tja und wieder ein Witz, Joke oder so. Hier im Forum hatten wir es erst mit solchen coolen Witzen ;)
Gruß hagen
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Hm, das hängt davon ab: ist der Source nicht sauber an den Compiler angepasst oder ist der Compiler in seinen Fähigkeiten nicht korrekt an die Möglichkeiten der Hardware angepasst.
Ich persönlich habe nun seit BP 4.1 miterleben können wie unsicherer und ungenauer die Überlauf-Prüfung im Compiler wurde. Von Version zu Version entstanden in der Überlaufprüfung immer mehr Lücken und andererseits...
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Die Bereichsüberprüfung, bzw. eben das Rangechecking, sollte man NUR zur Entwicklugszeit aktivieren. In den Finalen Versionen sollte man IMMER ohne Debug/Überlaufprüfungen etc. compilieren.
Da in den meisten Fällen der Rangcheck immer nur dort anschlägt wo man es NICHT möchte aber fast NIEMALS dort anschlägt wo es sinnvoll wäre deaktiviere ich dies Überprüfung in meinen Sourcen von vornherein....
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Compileroptionen->Bereichsüberprüfung->aus.
Oder im Source mit dedingter Compilierung.
{$IFOPT R+}
{$DEFINE INSUFFICIENT}
{$ENDIF}
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Logisch, das ist die Funktion im RC4 Algorithmus, eben eine Modulo 256 Operation. In diesem Sinne ist in meinem Code alles in Ordnung und der Code setzt absichtlich auf das Verhalten das bei der Addition eines Bytes +x beim Überlauf eine modulo 256 Operation impliziert ausgeführt wird.
Allerdings, ich gebe dir Recht das dies einem klar definierten Verhalten eines Sources ohne Fehler...
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Ganz im Gegensatz zu Random(), kann man aber RC4 so umbauen das er als Zufallsgenerator dient der sogar statistisch gesehen weit besser als Random() selber ist.
var
RC4Random: TRC4Context;
procedure RC4Seed(const Seed: String);
begin
RC4Init(RC4Random, Seed);
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Für Strings einfach einen overload machen:
function RC4Code(var RC4: RC4Context; const Value: String): String; overload;
var
Count: Integer;
begin
Count := Length(Value);
SetLength(Result, Count);
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Schau mal, nachfolgender Code ist die RC4 Verschlüsselung. Sie gilt als sicher und ich will dir mal zeigen wieviel Aufwand sie im Source darstellt. Schnell wird ersichtlich, das im Gegensatz zu deiner sehr unsicheren Methode, eine starke Verschlüsselung NICHT zwangsläufig auch aufwendig sein muß.
type
TRC4Context = record
D: array of Byte;
I,J: Byte;
end;
procedure...
Forum: Software-Projekte der Mitglieder
by negaH,
21. Jul 2004
Merke: Am UN-sichersten ist es einen Text zweimal oder mehrfach zu verschlüsseln !!
Zb. eine RC4 Verschlüsselung mit gleichem Passwort ZWEIMAL auf sich selber angewendet, entschlüsselt den vorher verschüsselten Text wieder. Logisch, da die Entschlüsselung-Funktion die gleiche ist wie die der Verschlüsselung. Bei allen XOR- und Streamverschlüsselungen trifft diese Aussage zu.
Da man beweisen...