Verschlüsselung

Hallo,

ich habe ein Verschlüsslungsprogramm geschrieben, mal sehr wer mein Code als erstes Knack wenn ihr hier das überhaupt könnt:
Der zu knackende Code:

1080108152229364350576471788592991061131201271341411481551621691761831901972042112182252322392462532602672742801839305177770578085052847005388550569009053862405277770538778054762305185470547700051777705780850518855053893205884700538085057762305380080568932057885505691630537777052877805389320548855052762305780080537469054770005277770577469053754605777770588778054916305874690578008051877805


Und ihr das Programm:
function verschüssel (Wort: string) : string;
var i,f,x,v,ran:integer;
test, test1, test2, ran_str, test3 : string;
begin
test := '';
ran_str := '';
ran := 0;
For i := 1 to length(wort) do begin
ran := random(8)+1;
test2 := Inttostr(Ord(Wort)*154) ;
v := Ord(Wort) * 154 * length(test2);
test2 := InttoStr(v) + InttoStr(length(test2));
test := Test+ InttoStr(ran);
If length(test) <10 then ran_str := ran_str + '0' + inttostr(length(test)) else
ran_str := ran_str + InttoStr(length(test));
test := test + test2;
end;
If length(test)> 9 then ran_str := ran_str + inttostr(length(test)) else ran_str := ran_str + '0' + InttoStr(length(test));
test3 := InttoStr(Length(ran_str));
If strtoint(test3) < 9 then test3 := '0' + test3;
result := test3 + ran_str + test;
end;
 
1. gehört sowas in Encryption oder unter hackits oder sowas
2. In [ CODE ]-Tags isses übersichtlicher
3. Vll. ne Angabe, welche Sprache das ist?
4. Ich versteh zwar die Sprache net wirklich, aber sieht nicht so aus, als wäre das ganze umkehrbar, da du ja Zufallszahlen zur Verschlüsselung verwendest
 
das ist delphie, also ich denke dann kennst du dich nicht gut aus im programmieren oder verschlüsselung,sorry vlt habe ich die falschen Thread gewählt
 
Das ich Delphi das letzte mal gecodet hab is schon ewig her, und an nen := Operator kann ich mich da leider nimmer errinnern...
Aber wie gesagt, kannst du denn selber deine Verschlüsselung umkehren?
Da das ganze ja mithilfe von Zufallszahlen verschlüsselt wird, dürfte sich das recht schwirig gestallten.

OK, hab mir das jetzt nochmal genau und in Ruhe angeschaut, das sieht seehr nach ner einseitigen Verschlüssenlung aus, die nicht mehr umkehrbar ist, wegen der lenght und der Zufallszahl
 
ich kann dir sagen zu 100% ist die umkehrbar. musst dir mal den anfang des verschlüsslungsstrign angucken
 
hat mich einiges an denkarbeit gekostet, aber habs raus bekommen:

meinsupercodeistnichtswertschadeaberwahr :p

lösungsprogramm (java) siehe anhang.
 
sauber.... herzlichen glückwunsch

ich denke aber das ohne meine quellcode da keieer so schnell drauf kommt

aber eine universal entschlüsslung ist das auch nicht, das passt jetzt bei diesem einen Fall aber es geht nicht bei jedem
 
ich denke aber das ohne meine quellcode da keieer so schnell drauf kommt

de facto wird das vollkommen unmöglich sein, den wenn man GAR_NICHTS weiß, dann kann man immer algorithmen finden, die einem aus irgendeinem text einen anderen (sinnvollen) generieren.

ab das ist auch nicht die frage - security by obscurity ist eh ungern gesehn..

ich werd mir das auch mal irgendwann zu gemüte führn.. wenn ich mich mal aufraffen könnte..
 
Original von Strahl
aber eine universal entschlüsslung ist das auch nicht, das passt jetzt bei diesem einen Fall aber es geht nicht bei jedem
jo kann sein. ran_str zählt bei dir im prinzip die abstände der einzelnen test strings. ich habe diesen teil einfach weggelassen und immer den abstand 7 gewählt, da es für deinen code auch so funktioniert und auch bei anderen strings funktionierte die ich noch getestet habe.
 
kann ich jetzt mal sagen wie das geht:

Also man nehme den String ->
Man zieht dich die Asciiwerte der einzelnen Zeichen. Multipliziert die mit 152 anschließend mit der eigenen länge, daran hängt man die eiegene länge. Dann wird eine Zufallszahl zwischen den string der einzelnen zeichen gespeichert. Die Position der Zufallszahlen werden nacheinander vorne in den Verschlüsslungs string angehängt und davor nach die gesamt anzahl, der zahllen , die die position angeben
 
@ivegotmail
Wie hast du aus der Länge die Zeichen wiederhergestellt?
bzw. Wie kann man überhaupt wenn das mit der länge multipliziert wurde wieder zurückkommen?

Geb zu so super kenn ich mich net damit aus, aber für mich klingts einleuchtend, dass wenn man sowas mit der eigenen länge verschlüsselt, es dann nimmer umkehrbar ist ?(
 
ich erklär mal wie ich bei meiner entschlüsselungsfunktion vorgegangen bin:

der code besteht aus 3 teilen (result := test3 + ran_str + test;).
wenn man sich die verschlüsselungsfunktion anschaut (und versteht), weiß man das ran_str immer mit "01" anfangen muss.
jetzt sucht man im code nach dem ersten auftreten von "01" und hat den anfang von ran_str (4. buchstabe).
alles davor ist also test3 (=108) und das ist wiederum die länge von ran_str (test3 := InttoStr(Length(ran_str));).
wenn man diese länge hat und den anfang von ran_str, so weiß man auch wo test anfängt (3+108) und auch endet (ende des codes). somit hat man den code erstmal in die 3 teile zerlegt.

ran_str gibt im prinzip immer an, welche teile von test zu einem buchstaben gehören.
0108152229... entspricht 01 08 15 22 29 ...
eigentlich müsste man hier immer die abstände ermitteln und weiß dann wieviel zeichen von test jeweils zu einem buchstaben gehören. da der abstand aber in unserem fall immer 7 ist, hab ich das nicht exakt ausprogrammiert, sondern gehe einfach immer von 7 zeichen aus.

als nehm ich mir nach einander 7 zeichen aus test (dem 3. teil vom code). der erste buchstabe ist die zufallszahl und kann vernachlässigt werden. die 7. zahl ist die länge von test2 (in unserem fall immer 5).
die zeichen 2-6 (also diese 5 stellige zahl) dividiert man nun jeweils durch 154 und test2länge (5) und erhält das entsprechende zeichen (bzw den ascii wert).
 
Zurück
Oben