von Datein und von Strings.
Sie eignet sich in meinen Augen sehr für
einfache Spiele Saves,
da man nicht viel beachten muss.
-Entschlüsseln
-Auslesen
-Verschlüsseln
Das ganze läuft auch unter Unicode
(soweit ich das testen/beurteilen konnte...)
verständigung(z.b Chats) Non Unicode - Unicode geht nicht
Die Proceduren bestehen eigentlich aus
2 Teilen , einmal das ermitteln der Key Checksumme
durch das zusammen zählen der ASCII werten.
Und das errechnen des Verschlüsselten Strings/Datein
mit dem errechneten Key.
Leider habe ich bei der Datei Verschlüsselung keine
andere Möglichkeit gesehen als es mit einer Temp
Datei zu lösen.
Das ganze dauert keine 1/8 ms bei mir (XCrypt)
Eine Text Datei mit ca. 10 Mb Inhalt dauert bei mir
ca. eine halbe Sekunde.
Zur Sicherheit kann ich nicht viel, würde mich aber
über Kommentare freuen , was daran besser gemacht
werden kann.
Aber für ein einfachen Spiele Save dürfte das locker
reichen, oder änliches was nicht die Welt bedeutet.
Mfg
XCrypt.pb
Code: Alles auswählen
Procedure.s XFileCrypt(File$, Key$)
XCryptKeyLen = Len(Key$)
For XCryptKeyStartLen = 1 To XCryptKeyLen
XCryptKeySingleChar$ = Mid(Key$, XCryptKeyStartLen, 1)
For ascakt = 1 To 256
If Chr(ascakt) = XCryptKeySingleChar$
XCryptKey + ascakt
EndIf
Next
Next
XCryptFile = ReadFile(#PB_Any, File$)
TempXCryptFile = CreateFile(#PB_Any, "XCrypt-Temp-Crypt-File.txt")
While Eof(XCryptFile) = 0
XCryptString$ = ReadString(XCryptFile)
XCryptStringLen = Len(XCryptString$)
For XCryptStartLen = 1 To XCryptStringLen
XCryptStringSingleChar$ = Mid(XCryptString$, XCryptStartLen, 1)
XCryptNewString$ + Chr(Asc(XCryptStringSingleChar$) + XCryptKey)
Next
WriteStringN(TempXCryptFile, XCryptNewString$)
XCryptNewString$ = ""
Wend
CloseFile(TempXCryptFile)
CloseFile(XCryptFile)
CopyFile("XCrypt-Temp-Crypt-File.txt", File$)
DeleteFile("XCrypt-Temp-Crypt-File.txt")
EndProcedure
Procedure.s XFileEncrypt(File$, Key$)
XCryptKeyLen = Len(Key$)
For XCryptKeyStartLen = 1 To XCryptKeyLen
XCryptKeySingleChar$ = Mid(Key$, XCryptKeyStartLen, 1)
For ascakt = 1 To 256
If Chr(ascakt) = XCryptKeySingleChar$
XCryptKey + ascakt
EndIf
Next
Next
XCryptFile = ReadFile(#PB_Any, File$)
TempXCryptFile = CreateFile(#PB_Any, "XCrypt-Temp-Crypt-File.txt")
While Eof(XCryptFile) = 0
XCryptString$ = ReadString(XCryptFile)
XCryptStringLen = Len(XCryptString$)
For XCryptStartLen = 1 To XCryptStringLen
XCryptStringSingleChar$ = Mid(XCryptString$, XCryptStartLen, 1)
XCryptNewString$ + Chr(Asc(XCryptStringSingleChar$)-XCryptKey)
Next
WriteStringN(TempXCryptFile, XCryptNewString$)
XCryptNewString$ = ""
Wend
CloseFile(TempXCryptFile)
CloseFile(XCryptFile)
CopyFile("XCrypt-Temp-Crypt-File.txt", File$)
DeleteFile("XCrypt-Temp-Crypt-File.txt")
EndProcedure
Procedure.s XCrypt(String$, Key$)
XCryptKeyLen = Len(Key$)
For XCryptKeyStartLen = 1 To XCryptKeyLen
XCryptKeySingleChar$ = Mid(Key$, XCryptKeyStartLen, 1)
For ascakt = 1 To 256
If Chr(ascakt) = XCryptKeySingleChar$
XCryptKey + ascakt
EndIf
Next
Next
XCryptStringLen = Len(String$)
For XCryptStartLen = 1 To XCryptStringLen
XCryptStringSingleChar$ = Mid(String$, XCryptStartLen, 1)
XCryptNewString$ + Chr(Asc(XCryptStringSingleChar$) + XCryptKey)
Next
ProcedureReturn XCryptNewString$
EndProcedure
Procedure.s XEncrypt(String$, Key$)
XCryptKeyLen = Len(Key$)
For XCryptKeyStartLen = 1 To XCryptKeyLen
XCryptKeySingleChar$ = Mid(Key$, XCryptKeyStartLen, 1)
For ascakt = 1 To 256
If Chr(ascakt) = XCryptKeySingleChar$
XCryptKey + ascakt
EndIf
Next
Next
XCryptStringLen = Len(String$)
For XCryptStartLen = 1 To XCryptStringLen
XCryptStringSingleChar$ = Mid(String$, XCryptStartLen, 1)
XCryptNewString$ + Chr(Asc(XCryptStringSingleChar$)-XCryptKey)
Next
ProcedureReturn XCryptNewString$
EndProcedure
2 Beispiele dazu
- Datei Beispiel
- (Vorher Beispiel datei erstellen)
Code: Alles auswählen
+++++++++++++++++++++++++++++++++++
;+ XCrypt by X360´s World - Andreas Rauscher +
;+++++++++++++++++++++++++++++++++++
XIncludeFile "XCrypt.pb"
Enumeration
#Button_0
#String_0
#Text_0
#Radio_0
#Radio_1
#String_1
#Editor_0
#Frame3D_1
EndEnumeration
Procedure XCyrpt_File_Bsp_Window()
If OpenWindow(0, 219, 97, 278, 217, "XCrypt File Beispiel", #PB_Window_SystemMenu | #PB_Window_TitleBar)
ButtonGadget(#Button_0, 200, 70, 70, 20, "Crypt")
StringGadget(#String_0, 40, 30, 230, 20, "Ich bin ein Beispiel Key")
TextGadget(#Text_0, 10, 30, 20, 20, "Key:")
OptionGadget(#Radio_0, 10, 10, 130, 20, "Datei Verschlüsseln")
OptionGadget(#Radio_1, 160, 10, 150, 20, "Datei Entschlüsseln")
StringGadget(#String_1, 10, 70, 180, 20, "XCrypt File Beispiel Datei.txt")
EditorGadget(#Editor_0, 10, 100, 260, 100)
Frame3DGadget(#Frame3D_1, 5, 5, 267, 50, "")
EndIf
EndProcedure
XCyrpt_File_Bsp_Window()
Repeat
Select WindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
ClearGadgetItemList(#Editor_0)
;Wir erhalten unseren Key und den Pfad zur Datei
Key$ = GetGadgetText(#String_0)
File$ = GetGadgetText(#String_1)
If GetGadgetState(#Radio_0) = 1
;XFilecrypt() wird aufgerufen und verschlüsselt die Datei
; Der Verschlüsselte Text ist dann sofort in der Datei
XFilecrypt(File$, Key$)
; Nun Lesen wir die soeben Verschlüsselte Datei ....
File = ReadFile(#PB_Any, File$)
While Eof(File) = 0
;.... Schritt für Schritt und setzten den Eintrag in das Editor Feld
AddGadgetItem(#Editor_0, -1, ReadString(File))
Wend
ElseIf GetGadgetState(#Radio_1) = 1
;XFileEncrypt() wird aufgerufen und enschlüsselt die Verschlüsselte Datei
; Der Entschlüsselte Text ist dann sofort in der Datei
XFileEncrypt(File$, Key$)
File = ReadFile(#PB_Any, File$)
While Eof(File) = 0
AddGadgetItem(#Editor_0, -1, ReadString(File))
Wend
;Nachdem wir den Text ins Editor Feld ausgegebn haben
;verschlüsseln wir die Datei wir die Datei wieder
XFilecrypt(File$, Key$)
EndIf
EndSelect
Case #PB_Event_CloseWindow
quit = 1
EndSelect
Until quit = 1
-String Beispiel
Code: Alles auswählen
;+++++++++++++++++++++++++++++++++++
;+ XCrypt by X360´s World - Andreas Rauscher +
;+++++++++++++++++++++++++++++++++++
XIncludeFile "XCrypt.pb"
Enumeration
#String_0
#Button_0
#Radio_0
#Radio_1
#String_1
#Text_0
#Frame3D_0
#Frame3D_1
#String_2
EndEnumeration
Procedure XCyrpt_String_Bsp_Window()
If OpenWindow(0, 531, 249, 204, 158, "XCrypt String Beispiel", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
OptionGadget(#Radio_0, 10, 10, 80, 20, "Verschlüsseln")
OptionGadget(#Radio_1, 110, 10, 80, 20, "Entschlüsseln")
StringGadget(#String_1, 32, 30, 160, 20, "")
StringGadget(#String_0, 10, 70, 130, 20, "")
StringGadget(#String_2, 20, 120, 170, 20, "")
ButtonGadget(#Button_0, 150, 70, 50, 20, "Crypt")
TextGadget(#Text_0, 10, 32, 20, 20, "Key:")
Frame3DGadget(#Frame3D_0, 5, 0, 192, 60, "")
Frame3DGadget(#Frame3D_1, 10, 100, 190, 50, "Ausgabe")
EndIf
EndProcedure
XCyrpt_String_Bsp_Window()
Repeat
Select WindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
If GetGadgetState(#Radio_0) = 1
;Wir benützen den Befehl XCrypt um die Datei zu verschlüsseln über GetGadgetText erhalten wir die
;Notwendigen Texte aus den StringGadgets
;Der Verschlüsselte Text wird dann einem weteren StringGadget ausgegeben
SetGadgetText(#String_2, XCrypt(GetGadgetText(#String_0), GetGadgetText(#String_1)))
Else
;Wir benützen den Befehl XEnCrypt um die Datei zu entschlüsseln über GetGadgetText erhalten wir die
;Notwendigen Texte aus den StringGadgets
;Der Entschlüsselte Text wird dann einem weteren StringGadget ausgegeben
SetGadgetText(#String_2, XEnCrypt(GetGadgetText(#String_0), GetGadgetText(#String_1)))
EndIf
EndSelect
Case #PB_Event_CloseWindow
quit = 1
EndSelect
Until quit = 1
Hier noch das ganze als Download mit Bsp. Txt Datei
und das ganze noch als binary datei.
PB 4.20 | PB 4.30
Mfg