key.s=GetGadgetText(1)
key_len=Len(key)
Dim key_schlussel.b(key_len)
For i=0 To key_len-1
key_schlussel(i)=Asc(Mid(key,i+1,1))
Next
Dim byte_bank.b(FileSize(file))
a=0
For i=0 To FileSize(file)-1
temp_byte.b=ReadByte()
temp_byte+key_schlussel(a)
If a=key_len-1
a=0
Else
a+1
EndIf
byte_bank(i)=temp_byte
Next i
CloseFile(0)
If CreateFile(0,file_out)=0
Error("Konnte die Datei nicht erstellen!",0)
Else
For i=0 To FileSize(file)-1
WriteByte(byte_bank(i))
Next i
CloseFile(0)
SetGadgetText(3,"")
SetGadgetText(9,"")
SetGadgetText(1,"")
EndIf
Wenn die Exe Datei gerade läuft gehts natürlich nicht
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
key.s=GetGadgetText(1)
key_len=Len(key)
Dim key_schlussel.b(key_len)
[b] For i=0 To key_len-1
key_schlussel(i)=Asc(Mid(key,i+1,1))
Next[/b] Dim byte_bank.b(FileSize(file))
a=0
.
.
ja ich weis memory bank... aba daran liegts nich[/quote]
Ist das gewollt, dass du key_schlussel ab dem 2. Zeichen von Key erst umsetzt ? Machst Du das beim Entschlüsseln genauso ?
Und falls Du so eine Exe-Datei verschlüsselst: Die enthält viele Zeichen mit einem ASCII Wert > 7 Bit kommen , wegen "signed byte" wird aus der Summe eine Differenz. Wenn Du beim Entschlüsseln wieder subtrahierst, passt das nicht mehr.
Beispiel:
Dein Schlüssel sei '0', also ASCII 48
Das zu verschlüsselnde Zeichen habe den Absolutwert 120, zu denen Du Deine 48 addierst.Gibt 168, aber wegen Vorzeichenbehaftung wird daraus -88, die abgespeichert werden. Wenn Du die dann wieder einliest und durch abziehen von 48 "entschlüsselst", steht da irgendwie was anderes drin als ursprünglich, scheint mir.
habe nicht alles geleson, wollte nur den hinweis geben, dass exe dateien binär geöffnet sein müssen, um operationen damit durchzuführen.
textdateien sind ascii-mäßig zu öffnen, da sie nicht binär sind.
das liegt (aus perl-erfahrung) mit den steuerzeichen, also zeilenumbrüchen zusammen in pb sind glaube ich die zeichen chr(0) bis chr(31) gemeint.
binäres öffnen wandelt chr(10) nicht in einen zeilenumbruch um, während ascii mäßiges öffnen (als wenn man eine normale textdatei öffnet) zeilenumbrüche auch tatsächlichals solche anzeigt.
ich hoffe das konnte helfen, wie gesagt, habe jetzt nicht alles durchgelesen...
AND51 hat geschrieben:habe nicht alles geleson, wollte nur den hinweis geben, dass exe dateien binär geöffnet sein müssen, um operationen damit durchzuführen.
textdateien sind ascii-mäßig zu öffnen, da sie nicht binär sind.
das liegt (aus perl-erfahrung) mit den steuerzeichen, also zeilenumbrüchen zusammen in pb sind glaube ich die zeichen chr(0) bis chr(31) gemeint.
binäres öffnen wandelt chr(10) nicht in einen zeilenumbruch um, während ascii mäßiges öffnen (als wenn man eine normale textdatei öffnet) zeilenumbrüche auch tatsächlichals solche anzeigt.
ich hoffe das konnte helfen, wie gesagt, habe jetzt nicht alles durchgelesen...
In PureBasic öffnet man jede Datei gleich, ob Binary oder Text, aber hier in diesem fall kann man EXE Dateien nur lesen(ReadFile() statt Open/CreateFile()), da sie gerade läuft.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.