einmal benutzt verschlüsselt es die Datei beim zweitemal wieder Entschlüsseln.
Zum Entschlüsseln muss das InFile angepasst werden.
Code: Alles auswählen
Procedure Mod(a,b)
ProcedureReturn a-(a/b)*b
EndProcedure
Procedure.l RC4Mem(Mem.l, memLen.l, key.s)
;RC4Mem(*MemoryBuffer.l, MomeryLength.l, Key.s)
Dim S.w(255)
Dim K.w(255)
i.l=0: j.l=0: t.l=0: x.l=0
temp.w=0: y.w=0
Outp.s=""
For i = 0 To 255
S(i) = i
Next
j = 1
For i = 0 To 255
If j > Len(key)
j = 1
EndIf
K(i) = Asc(Mid(key, j, 1))
j = j + 1
Next i
j = 0
For i = 0 To 255
j = Mod(j + S(i) + K(i), 256)
temp = S(i)
S(i) = S(j)
S(j) = temp
Next i
i = 0
j = 0
For x = 0 To memLen-1
i = Mod(i + 1, 256)
j = Mod(j + S(i),256)
temp = S(i)
S(i) = S(j)
S(j) = temp
t = Mod(S(i) + Mod(S(j), 256) , 256)
y = S(t)
PokeB(Mem+x, PeekB(Mem+x)!y)
Next
ProcedureReturn Mem
EndProcedure
Procedure rc4filecrypt(InFile.s,OutFile.s,key.s)
If OpenFile(0,InFile)
flength=Lof(0)
*filemem=AllocateMemory(flength)
For i.l=0 To flength-1
PokeB(*filemem+i,ReadByte(0))
Next
CloseFile(0)
EndIf
RC4Mem(*filemem,flength,key)
If CreateFile(0,OutFile)
For i.l=0 To flength-1
WriteByte(0,PeekB(*filemem+i))
Next
CloseFile(0)
ProcedureReturn 1
Else
CloseFile(0)
ProcedureReturn 0
EndIf
EndProcedure