Ja, das habe ich gestern im Netz auch gelesen. Und das ist ja auchVolker Schmid hat geschrieben: Ein Crypto-Algorithmus ist nur dann brauchbar, wenn er auch nach Offenlegung des Algorithmus noch Angriffen standhält (zB BlowFish, TwoFish, CAST256, Skipjack, RSA etc...).
logisch. An den Algo kann man ja (zumindest ASM-seitig) problemlos
auch von hintenherum drankommen, nur mit dem Nachteil nicht zu
wissen ob seine Effizienz ausreichend ist.
Ruckzuck hat da ein Profi einen Algo entwickelt, der auf Knopfdruck
alle Daten entschlüsselt.
Diesem Risiko möchte ich hier keinen aussetzen und ich halte es für
sinnvoller es hier prüfen zu lassen, wie weit es mit der Sicherheit her
ist. Mit gutem Beispiel voran:
Code: Alles auswählen
ProcedureDLL CryptMemory(*source,ssize,*phrase,spsize,mode)
If spsize<12
ProcedureReturn -1
EndIf
If ssize % 4:size = ssize/4 * 4 + 4:Else:size = ssize:EndIf
If spsize % 4:psize = spsize/4 * 4 + 4:Else:psize = spsize:EndIf
If mode:m = 1:Else:m = -1:EndIf : orglen = psize/4
Dim target.l(size/4-1)
CopyMemory(*source,@target(),ssize)
Dim key.l(orglen)
Dim klength.l(psize-1)
CopyMemory(*phrase,@key(),spsize)
For i=0 To orglen-1
sum + key(i)
Next i
key(orglen) = sum/(orglen-1)
For i=0 To psize-1 Step 4
For x=0 To 3
klength(i+x) = PeekB(@key()+i+x) & 255
If klength(i+x) > max
max =klength(i+x)
EndIf
Next x
Next i
norm=1 : ncp = 1
For i=0 To psize-1
kl.f = klength(i)* psize / max
klength(i) = (kl-1)/4
If last
If klength(i)=lastval
klength(i)=norm
norm + ncp
If norm=orglen-1 Or norm=1
ncp * -1
EndIf
EndIf
EndIf
If klength(i)=0
klength(i)+1
EndIf
lastval=klength(i)
last=1
Next i
stop = orglen-1 : mutate = 1
For x=0 To stop
p=mutate:If p=x:p=x+1:EndIf
key(x) + key(p)
mutate+1
If mutate=orglen
mutate = 0
EndIf
Next x
stop = psize/2
mutate = 1
For i=0 To size/4-1
target(i) - key(k) * m
k+1
If k>=klength(stop)
k=0:stop-1
If stop=0
stop=psize-1
Else
For x=0 To klength(stop)
p=mutate:If p=x:p=x+1:EndIf
key(x) + key(p)
mutate+1
If mutate=orglen
mutate = 0
EndIf
Next x
EndIf
EndIf
Next i
CopyMemory(@target(),*source,ssize)
Dim target.l(0)
Dim key.l(0)
Dim klength(0)
ProcedureReturn *source
EndProcedureIch lerne ja noch auf diesem Gebiet.
Gruß,
Mischa