Sowas hier in der Art:
Code: Alles auswählen
#Key = $7F368CA2
InitSound()
UseOGGSoundDecoder()
Procedure SimpleDecode(*mem.l, length.l, key.l)
For i = 0 To length Step 4
PokeL(*mem + i, PeekL(*mem + i) ! key)
Next
EndProcedure
Procedure SimpleEncode(*mem.l, length.l, key.l)
For i = 0 To length Step 4
PokeL(*mem + i, PeekL(*mem + i) ! key)
Next
EndProcedure
Procedure CreateEncodedFile(filename.s)
ReadFile(0, filename)
length = Lof(0)
*mem = AllocateMemory(length)
ReadData(0, *mem, length)
CloseFile(0)
SimpleEncode(*mem, length, #Key)
OpenFile(0, filename + ".enc")
WriteData(0, *mem, length)
CloseFile(0)
FreeMemory(*mem)
EndProcedure
Procedure LoadEncodedSoundFile(filename.s)
ReadFile(0, filename)
length = Lof(0)
*mem = AllocateMemory(length)
ReadData(0, *mem, length)
CloseFile(0)
SimpleDecode(*mem, length, #Key)
sound = CatchSound(#PB_Any, *mem)
FreeMemory(*mem)
ProcedureReturn sound
EndProcedure
;- wähle eine bereits verschlüsselte .enc-Datei oder eine wav oder ogg-Datei
filename.s = OpenFileRequester(".wav-file", "C:\", "*.enc|*.enc|*.wav|*.wav|*.ogg|*.ogg", 0)
If filename = ""
End
EndIf
;- Wenn nicht .enc, dann verschlüssele die Datei
If SelectedFilePattern() <> 0
CreateEncodedFile(filename)
EndIf
;- Jetzt ist "filename.enc" die verschlüsselte Datei
;- Nun laden wir sie
sound.l = LoadEncodedSoundFile(filename + ".enc")
PlaySound(sound)
Delay(10000)
Die Verschlüsselung mit festem XOR-key ist natürlich sehr simpel. Ein 'Angreifer' braucht nur die Originaldatei (falls vorhanden) mit der encodeten zu xoren, und schon hat er den key. Liegt ihm die Originaldatei nicht vor, so wird es schon etwas schwieriger, jedoch kann er vermuten, dass es sich um .wav oder .ogg handelt, und dann an markanten Stellen im Header den Key versuchen zu erraten.
Da könntest du dir aber eine schönere Verschlüsselung einbauen. Ggf. wird der Key sogar passwortgeneriert und dann mit fortlaufenden MD5-Hashes des ketzten keys rekursiv neu berechnet, oder irgendwie sowas.
Viel Spaß beim weiterbasteln!