Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 17:49 Titel: Verschlüsselungs Programm |
|
|
Ich hab aus langerweile ein Verschlüsselungs prog geschrieben mit dem ich Daten aus einer Datei binar auslese und dann zeichen für zeichen über den ASCII code umwandle in ein anderes Zeichen. Mein Problem ist das wenn das Zeichen mit dem ASCII code 0 in der Verschlüsselten datei steht lässt sich der nachfolgende Text nicht auslesen. Bsp:
Original:Hallo Thorben
Entschlüsselt:Hallo Th
Ich hoffe ihr versteht mein Problem und könnt mir helfen.
MFG Thorben |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 20.06.2007, 17:53 Titel: |
|
|
Wenn du tatsächlich binär ausliest, sollte das nicht das Problem sein. Welche Art von Strings verwendest du?
Imho werden nur bei ZStrings 0-Bytes zur Terminierung genutzt. :/
/edit:
Des Weiteren ist der Code bei solchen Dingen enorm nützlich, Glaskugeln arbeiten nämlich nur unter äußerst ungünstigen Zeiten.
@csderats:
Es geht ihm hier nicht um das Kopieren, sondern um direkt sein Problem.
Und UShort ist 0-65535, UByte ist 0-255.  _________________ Eine handvoll Glück reicht nie für zwei.
--

Zuletzt bearbeitet von Mao am 20.06.2007, 17:55, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 20.06.2007, 17:55 Titel: |
|
|
CSDERats hat Folgendes geschrieben: | als ushort dimmen zwinkern unter 0 gehts dann von 255 abwärts; |
Das tut echt weh, Junge... wenn du von 0 - 255 haben willst, muss es UByte sein, bei UShort isses 0-65535...  |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 20.06.2007, 17:55 Titel: |
|
|
PMedia hat Folgendes geschrieben: | CSDERats hat Folgendes geschrieben: | als ushort dimmen zwinkern unter 0 gehts dann von 255 abwärts; |
Das tut echt weh, Junge... wenn du von 0 - 255 haben willst, muss es UByte sein, bei UShort isses 0-65535...  |
kann ja ma vorkommen  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 18:07 Titel: |
|
|
Hab schon alles probiert. Hab den Typ, der beim rechnen verwendet wird, sogar schon auf INTEGER umgestellt das sollte reichen.
Code: |
DIM TmpString AS STRING * 512
DIM TmpString2 AS STRING
OPEN SourceFile FOR BINARY AS #FileNo
DO
GET #1,, TmpString
TmpString2 += TmpString
LOOP UNTIL EOF(1)
CLOSE #FileNo
|
So sieht in etwa meine Rutine aus zu auslesen der Verschlüsselten Datei.
MFG Thorben |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 19:08 Titel: |
|
|
Ich hab nochmal ein kleines Beispiel Prog geschrieben welches mein Problem verdeutlichen sollte.
Code: |
DIM WriteStr AS STRING
DIM ReadStr AS STRING * 32
DIM PrintStr AS STRING
WriteStr = "Das ist " + CHR$( 0 ) + "ein Test"
OPEN "test5.txt" FOR OUTPUT AS #1
CLOSE #1
OPEN "test5.txt" FOR BINARY AS #1
PUT #1,, WriteStr
CLOSE #1
OPEN "test5.txt" FOR BINARY AS #1
GET #1,, ReadStr
CLOSE #1
PrintStr = ReadStr
LOCATE 2,2: PRINT "Value PrintStr: " + PrintStr
LOCATE 4,2: PRINT "Laenge PrintStr: " + STR$( LEN( PrintStr ) )
FOR i = 1 TO LEN( PrintStr )
LOCATE 6 + i, 2: PRINT MID$( PrintStr , i , 1 ), PrintStr[ i - 1 ]
NEXT i
SLEEP: END
|
Das Problem ist das Unten nur "Das ist " ausgegeben wird der Rest fällt weg. Ich kann mir das nicht erklären. Ihr? Wenn ja wo ist der Fehler was muss ich anders machen?
MFG Thorben |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 20.06.2007, 19:16 Titel: |
|
|
Ich nehme an das es was mit den steuerzeichen zu tun hat, was und wie chr(0) kann ich leider nicht erklaeren, aber wenn Du 0 durch 255 ersetzt hast vielleicht das gewuenschte ergebnis _________________
 |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 19:27 Titel: |
|
|
Danke aber:
Es ist mir bewusst das das mit 255 geht. Mein Problem stark vereinfacht:
Ich habe z.b. den Buschstaben "D" ASCII=68 wenn dieser Buchstabe jetzt, weil er ja verschlüsselt werden soll, um z.B. 68 Zeichen nach hinten verschoben wird hat er ASCII=0 Den Wert schreibe ich dann in eine Datei und was beim Auslesen dann passiert solltet man an meinem Beispiel sehen s.o.. In diesem fall kann ich aber 0 nicht durch 255 ersetzen weil das ein komplett falsches Ergebniss bei der Entschlüsselung liefern kann.
MFG Thorben |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 20.06.2007, 19:31 Titel: |
|
|
ok, das leuchtet mir ein...
aber je nachdem was Du verschluesseln willst, ist es unwahscheinlich das ein chr(0) auf den Bildschrim ausgeben wirst...
denn chr(0) ist gespeichert und wird auch ausgelesen, es wird nur nicht auf den Bildschirm ausgegeben... wie gesagt, kann es nicht genau erklaeren.
aber wenn Du nun vor der Ausgabe ?len(ReadStr) wirst Du sehen das ReadStr eine zeichenkette von 17 Zeichen ist, wie es ja auch sein sollte... _________________
 |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 19:36 Titel: |
|
|
Ich habe es gerade ausprobiert und bei mir ist LEN(ReadStr) = 7 aber nicht 17.
/edit:
Wenn ich die Datei zeichenweise auslese gehts. Das dauert bei größeren Datein nur ein bichen zu lange.
MFG Thorben |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 20.06.2007, 19:45 Titel: |
|
|
Ja, mir war da ein fehler beim testen unterlaufen...
und wollte Dir das mit dem zeichenweise gerade vorschlagen....
Code: |
Dim Reader as String
Dim Writer as String
Dim Text1 as string
Text1="Das ist "+chr(0)+"ein Test"
?Text1,len(text1)
Open "VTestX.txt" for binary access write as #1
put #1,,Text1
Close #1
Dim Text2 as string *17
Dim Text as string
Open "VTestX.txt" for binary access read as #1
get #1,,Text2
Close #1
Text=Text2
?Text2
?Text,len(text)
sleep
|
Ich habe es gerade selbst noch einmal getestet, die zeichen werden zwar richtig gespeichert und auch wieder richtig ausgelesen, aber irgendwas lasuft bei der uebergabe falsch... _________________
 |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 20.06.2007, 20:08 Titel: |
|
|
Auch die Ausgabe in verbindung mit einem Weiterem String funktioniert nicht
z.B. PRINT "Ausgabe: " + Text2
Irgenwie merkwürdig ich kann mir das nicht erklären.
MFG Thorben |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.06.2007, 20:44 Titel: |
|
|
Mao hat Folgendes geschrieben: | @csderats:
Es geht ihm hier nicht um das Kopieren, sondern um direkt sein Problem. |
muss einfach mal Mao zitieren...  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 20.06.2007, 21:22 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Mao hat Folgendes geschrieben: | @csderats:
Es geht ihm hier nicht um das Kopieren, sondern um direkt sein Problem. |
muss einfach mal Mao zitieren...  |
muss enfach mal Jojo zitieren...
da ist ein beispiel
wie mans machen kann
und da werden selbst ochars ausgegeben  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 21.06.2007, 08:29 Titel: |
|
|
Also das ganze Hilft mir nicht recht weiter.
Da mehr als eine Kapute Quell Datei bzw Ziel Datei oder die Ausgabe das der Schluessel Ungültig ist konnte ich deinem Programm noch nicht entlocken. Mir scheint das so als hätte dein Prog auch probleme mit Zeichen die den ASCII code 0 haben.
MFG Thorben |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.06.2007, 12:47 Titel: |
|
|
csderats:
Aber es hat halt nix beigetragen und war nichts weiter als Werbung.
(Wogegen ich auch nichts hab, wenn es der Diskussion dienlich ist...Aber in diesem Fall ging's um sein Programm. Hätte er um ein Verschlüsselungsprogramm gefragt, wär das schon wieder was anderes...) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 21.06.2007, 17:31 Titel: |
|
|
Hat jemand von euch jetzt noch ne Idee woran das liegt oder wie ich das Problem lösen kann?
MFG Thorben |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.06.2007, 17:46 Titel: |
|
|
da du ja mit BINARY dateien behandelst, muss man schonmal (eigentlich) nicht von einem fehler mit steuerzeichen wie chr(0) ausgehen...
notfalls mach's nicht so quick and dirty, sondenr eher so:
Code: |
code = asc(mid(text, i, 1))
code += verschluesselungszahl
if code > 255 then code -= 255
mid(text, i, 1) = code
|
ist halt einfach gehalten, funzt dafür aber. wichtig ist dabei, dass code ein SHORT ist. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|