Ich
präsentiere hier einen einfachen und schnell auszuführenden
Algorithmus, der Profis höchstwahrscheinlich keinen größeren Widerstand entgegensetzen dürfte. Alles unterhalb eines begabten Amateurs dürfte jedoch Probleme haben. |
VERSCHL und ENTSCHL geben immer einen String zurück, der die selbe Länge
hat wie der Ursprungsstring!
Der verschlüsselte String kann durchaus auch Zeichen beinhalten, die nicht
druckbar sind bzw. in Visual Foxpro (z. B. beim Browsen) des Zeichensatzes wegen
nicht anzeigbar sind. Man sieht nur Vierecke.
Anwendung:
Eine Datenbank habe ein Feld TEXT, Länge 30, Character.
Speichern in Datenbank:
replace text with verschl(padr(m->irgendwas,len(text))
Zurückholen:
m->irgendwas = entschl(text)
Code:
************************************************** VERSCHL
func verschl
param pcText
priv cText, nZaehler, cBuchst
cText = ""
do cx_fuellen
for nZaehler = 1 to len(pcText)
cBuchst = subs(pcText,nZaehler,1)
cBuchst = asc(cBuchst)+(len(pcText)-nZaehler)+asc(subs(cX,nZaehler,1))
cBuchst = chr(cBuchst % 256)
cText = cText + cBuchst
next
retu cText
************************************************** ENTSCHL
func entschl
param pcText
priv cText, nZaehler, cBuchst
cText = ""
do cx_fuellen
for nZaehler = 1 to len(pcText)
cBuchst = subs(pcText,nZaehler,1)
cBuchst = asc(cBuchst)-(len(pcText)-nZaehler)-asc(subs(cX,nZaehler,1))
if cBuchst < 0
cBuchst = cBuchst + 256
endi
cText = cText + chr(cBuchst)
next
retu cText
************************************************** CX_FUELLEN
proc cx_fuellen
* Schlüsselbegriff cX verwirrend füllen, damit man ihn nicht mit einem
Debugger o. ä. im Klartext herauslesen kann.
if type("cX") # "C"
publ cX
cX = "OE"
cX = "INH"+cX+"DVES"
cX = "TRAM"+cX+"OEH"+"ELI"
cX = "ENTE"+CX+"KUTASZ"
cX = cX + "IPUS"
cX = "HYL"+cX+"ZTA"
cX = "HE"+"XA"+"MET"+cX
cX = cX+"9"+cX+"A"+cX+"Y"+cX+"9"+cX
endi
retu
(www.zelczak.com/feiertag.htm)