Bilder verschlüsseln (gelöst)
Übersicht

![]() |
JimBobBalouBetreff: Bilder verschlüsseln (gelöst) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe vor ein Programm zu schreiben, mit dem ich Bilder ver/entschlüsseln kann:
Code: [AUSKLAPPEN] ;Programm zum Verschlüsseln----------------------------
quelle$ = Input("Dateiname (mit Dateiendung (z.B. jpg):") encryptionkey$ = Input("Schlüssel (beliebige Zeichenfolge, wird auch zum entschlüsseln benötigt):") readID = ReadFile (quelle$) writeID = WriteFile (quelle+".crypt") While Not Eof (readID) readrow$ = ReadLine$ (readID) WriteLine writeID,Encrypt$(readrow$,encryptionkey$) Wend Print "Fertig verschlüsselt!" Print "Drücke eine Taste um zu beenden." WaitKey ;------------------------------------------------------ Function Encrypt$(daten$,Key$) PlainLen = Len(daten$) KeyLen = Len(Key$) PrevChar = 0 For I = 1 To PlainLen KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1)) PlainChar = Asc(Mid(daten$,I,1)) CipherChar = (PlainChar + KeyChar + PrevChar) Mod 256 Cipher$ = Cipher$ + Chr(CipherChar) PrevChar = CipherChar Next Return Cipher$ End Function Code: [AUSKLAPPEN] ;Programm zum Entschlüsseln-----------------
quelle$ = Input("Dateiname (mit Dateiendung (z.B. jpg):") ext$ = Input("Gebe den neuen Dateinamen an (mit Endung)") decryptionkey$ = Input("Schlüssel (Zeichenfolge, die beim Verschlüsseln angegeben wurde):") readID = ReadFile (quelle$) writeID = WriteFile (ext) While Not Eof (readID) readrow$ = ReadLine$ (readID) WriteLine writeID,Decrypt$(readrow$,decryptionkey$) Wend Print "Fertig entschlüsselt!" Print "Drücke eine Taste um zu beenden." WaitKey ;----------------------------------------- Function Decrypt$(Cipher$,Key$) CipherLen = Len(Cipher$) KeyLen = Len(Key$) PrevChar = 0 For I = 1 To CipherLen KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1)) CipherChar = Asc(Mid(Cipher$,I,1)) PlainChar = (CipherChar - KeyChar - PrevChar + 512) Mod 256 Plain$ = Plain$ + Chr(PlainChar) PrevChar = CipherChar Next Return Plain$ End Function Wenn ich dann ein Bild ver und wieder Entschlüsselt habe kann es von allen meinen Grafikprogrammen nicht mehr felesen werden. Könnt ihr mir helfen ![]() |
||
- Zuletzt bearbeitet von JimBobBalou am Fr, Mai 02, 2008 19:09, insgesamt einmal bearbeitet
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich denk mal das liegt an der readline funktion!!!!
mach es doch so wie ich bei meinem packer: zuerst ermittelst du die filegrösse mit filesize. Diese Grösse schreibst du als erstes in die verschlüsselte datei als integer wert. beim entschlüsseln liest du diesen integer wert aus und lässt eine for-schleife durchlaufen. Also: 1. Filesize 2. File Byteweise einlesen (readbyte->writebyte) das sind die befehle die du mal versuchen solltest ![]() Code: [AUSKLAPPEN] Function PackFiles(file, path$)
dir = ReadDir(path$) Repeat f$ = NextFile(dir) If f$ = "" Then Exit Select FileType(path$ + f$) Case 1 file2 = ReadFile(path$ + f$) size = FileSize(path$ + f$) WriteString file, f$ WriteInt file, size fileBank=CreateBank(size) ReadBytes(filebank,file2,0,size) WriteBytes(filebank,file,0,size) FreeBank filebank CloseFile file2 Case 2 If f$ <> "." And f$ <> ".." Then PackFiles(file, path$ + f$ + "\") End Select Forever CloseDir dir End Function hier ist es über banks gelöst. das ist ein teil eines packers der alle dateien eines ordner in einer zusammen fast. schau dir einfach mal readbyte und writebyte an! das sollte dir schon helfen ![]() |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ehm... das liegt an WriteLine. Da wird jedesmal ein Return-Zeichen mitgeschrieben ![]() Mach es wirklich lieber mit Writebyte und veränder die einzelnen Bytes. ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
JimBobBalouBetreff: Da sind fehler, obwohl da keine Fehler sind ;( |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal Danke für die schnelle Antwort. ![]() Ich habe jetzt auch Functions geschrieben, aber ich komm irgendwie nicht weiter. ![]() Der Debugger sagt immer, dass EndIf ![]() ![]() Code: [AUSKLAPPEN] Function EncryptFile(name$,newname$,key$,deleteoldfile)
size = FileSize(name$) readID = ReadFile name$ writeID = WriteFile newname$ WriteInt writeID,size For n = 0 To size currentbyte = ReadByte readID plain$ = Chr$(currentbyte) PlainLen = Len(Plain$) KeyLen = Len(Key$) PrevChar = 0 For I = 1 To PlainLen KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1)) PlainChar = Asc(Mid(Plain$,I,1)) CipherChar = (PlainChar + KeyChar + PrevChar) Mod 256 Cipher$ = Cipher$ + Chr(CipherChar) PrevChar = CipherChar Next encryptedbyte = Asc(Cipher$) WriteByte writeID,encryptedbyte Next CloseFile readID CloseFile writeID If deleteoldfile=1 Then DeleteFile name End Function ;----------------------------------------------------------------- Function DecryptFile(name$,newname$,key$,writelog) readID = ReadFile name writeID = WriteFile newname$ size = ReadInt readID For n = 0 To size currentbyte = ReadByte readID Cipher$ = Chr$(currentbyte) CipherLen = Len(Cipher$) KeyLen = Len(Key$) PrevChar = 0 For I = 1 To CipherLen KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1)) CipherChar = Asc(Mid(Cipher$,I,1)) PlainChar = (CipherChar - KeyChar - PrevChar + 512) Mod 256 Plain$ = Plain$ + Chr(PlainChar) PrevChar = CipherChar Next decryptedbyte = Asc(Plain$) WriteByte writeID,decryptedbyte Next CloseFile readID CloseFile writeID If writelog=1 Then If FileType ("log.txt") = 0 Then tempID = WriteFile "log.txt" CloseFile tempID EndIf logID = OpenFile "log.txt" While Not Eof (logID) ReadLine$ logID Wend WriteLine$ logID,newname$ CloseFile logID EndIf End Function |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
beim überfliegen von deinem Code ist mir das aufgefallen
Endif scheint richtig zu sein. aber sowas geht nicht... Code: [AUSKLAPPEN] readID = ReadFile name$
writeID = WriteFile newname$ Da fehlen die Klammern! so ist es richtig : Code: [AUSKLAPPEN] readID = ReadFile (name$)
writeID = WriteFile (newname$) das hier ist auch falsch Code: [AUSKLAPPEN] WriteLine$ logID,newname$
Das Dollarzeichen muß da weg, da die Writeline Function keinen Wert zurück liefert |
||
[BB2D | BB3D | BB+]
|
![]() |
JimBobBalou |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke! Jetzt klaptt es. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group