Fuente/ Codesnippets | | | | Hubert Binnewies | ¡Hola zusammen...
Yo blanco...euch Profano Profis erzähle Yo nix neues, aber para nen Principiante podría que aquí interessant ser (bin schliesslich selber una Principiante).
Yo bin en el Verlegenheit gekommen algunos Cuerdas verschlüsselt a speichern en ellos antes neugierigen Augen a schützen. Darum Yo esta Rutina geschrieben. Sie es no unknackbar, aber el meisten voluntad una Disassambler brauchen en darauf a kommen.
Erstmal el Speicherroutine:
Ein möglicher Aufruf wäre KompilierenMarcaSeparaciónSpeichern "Daten.dat", String1$,String2$,String3$,String4$,String5$,Zahl1%,Zahl2%,Zahl3%,Zahl4%,Zahl5% > Wobei el 5 Pagar el más Verschlüsselung dienen y erstens Integer y zweitens en zwischen 1 y etwa 65400 mentira debería. Und el 5 Cuerdas debería una máximo Longitud de 200 no überschreiten (algo länger va ya aber entonces Será mejor que te va entschlüsselbar) y en etwa 235 plus minus unos pocos es bastante Schluss.
Hier el Speicher Rutina: KompilierenMarcaSeparación
Proc Speichern
Parameters Dateiname$, Var1$, Var2$, Var3$, Var4$, Var5$, Var1%, Var2%, Var3%, Var4%, Var5%, Dateiname$
Declare Anzahl%, Datei%, Zähler1%, Zähler2%, Dummy$, Dummy1$, Dummy%, Dummy1%
Anzahl%=Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)
Randomize
Declare Zufall#[Anzahl%+1], Datei#
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Dim Datei#,1024
Zufall#[0].Nummer%=@Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Zufall#[0].Nummer%=Zufall#[0].Nummer%*2
Zähler1%=0
Whileloop Anzahl%+1
Inc Zähler1%
Dummy1%=0
Whilenot Dummy1%
Dummy1%=1
Dummy%=Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Dummy%=Dummy%*2
Zähler2%=0
Whileloop Anzahl%+1
If Dummy%=Zufall#[Zähler2%].Nummer%
Dummy1%=0
endif
Inc Zähler2%
Endwhile
Endwhile
Zufall#[Zähler1%].Nummer%=Dummy%
Endwhile
Whileloop 512
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Word Datei#,0 = Len(Var1$)+Var1%,Len(Var2$)+Var2%,Len(Var3$)+Var3%,Len(Var4$)+Var4%,Len(Var5$)+Var5%
Whileloop Anzahl%+1
Word Datei#,(&Loop-1)*2+10,Zufall#[&Loop-1].Nummer%+&Loop
Endwhile
Dummy$=Var1$+Var2$+Var3$+Var4$+Var5$
Whileloop Anzahl%+1
Dummy1$=@Mid$(Dummy$,&loop-1,1)
Dummy%=@Ord(Dummy1$)+&Loop
Word Datei#,Zufall#[&loop-1].Nummer%,Dummy%
Endwhile
Assign #1, Dateiname$
OpenRW #1
BlockWrite #1, Datei#, 0, 1024
CloseRW #1
< s=s4 href='./../../function-references/XProfan/ENDPROC/'>ENDPROC
Diese Rutina producido una Expediente de exakt una Kilobyte el Hauptsächlich con Zufallswerten gefüllt se zwischen denen el Nutzwerte durcheinandergewürfelt y verändert versteckt son.
Natürlich muss al auch otra vez auseinanderpflücken puede:
Ein möglicher Aufruf: KompilierenMarcaSeparaciónLaden "Daten.dat",Nummer1%, Nummer2%, Nummer3%, Nummer4%, Nummer5%
Wobei esta 5 Nummern el eben oben beschriebenen son
Hier el Laderoutine: KompilierenMarcaSeparación___________ In Diesen Variables son después de Proc Aufruf el en el Expediente
___________ gespeicherten Cuerdas
Declarar Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc Laden
Parámetros Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Declarar Expediente#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, Anzahl%
Dim Expediente#, 1024
Asignar #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, Expediente#, 0, 1024)
CloseRW #1
Varl1%=@Word(Expediente#,0)-Var1%
Varl2%=@Word(Expediente#,2)-Var2%
Varl3%=@Word(Expediente#,4)-Var3%
Varl4%=@Word(Expediente#,6)-Var4%
Varl5%=@Word(Expediente#,8)-Var5%
Anzahl%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Declarar Zufall#[Anzahl%]
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Whileloop Anzahl%+1
Zufall#[&Loop-1].Nummer%=@Word(Expediente#,(&Loop-1)*2+10)
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-&Loop
Endwhile
Whileloop Anzahl%
Dummy1$=@chr$(@Word(Expediente#,Zufall#[&Loop].Nummer%)-&Loop-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid$(Dummy2$,&Loop,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
ENDPROC
Viel Spass así |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 23.04.2006 ▲ |
| |
| | Jac de Lad | Ist doch niedlich, probier Yo igual de!
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 23.04.2006 ▲ |
| |
| | Frank Abbing | Schöne Arbeit .
In el Zusammenhang media Verschlüsselungscode de el XPIA Beispielen. Er richtet se en erster Linie aber a User con erweiteren Programmkenntnissen, para el Geschwindigkeit wichtig es zusammen con un relativ sicheren Passwortschutz. KompilierenMarcaSeparaciónSuperschnelles XOR-Verschlüsselungs-Verfahren mit Passwortschutz.
Entliehen aus meiner ProSpeed.dll
{$cliq}
Declare text$,passwort$,nurso$
text$="Zunächst einmal: Für Assembler benötigt man keine grosse Anzahl von Befehlen, mit 10 Befehlen "
text$=text$+"(insgesamt gibt es über 90) ist man schon gut bedient, alles andere ist unnütz, weil der "
text$=text$+"MASM32 Assembler High-Level-Syntax (.while / .endw / .if / .endif usw.) unterstützt."
text$=text$+"Und davon ist einem Profan-User schon das meiste bekannt."
passwort$="Ganz geheimes Passwort."
Window 0,0-%maxx,%maxy
Print "Originaltext:"
Print
Color 7,15
Print text$
Color 0,15
Print
Print
ASM-Block
Crypt(), eine XOR-Verschlüsselung mittels Passwort
Übernommen aus meiner ProSpeed.dll
Parameter:
1) para1 = Bereichsvariable oder String, in der die Daten gespeichert sind.
2) para2 = Anzahl zu verschlüsselnder Bytes
3) para3 = Pointer auf einen String (oder Bereich), in dem das Passwort gespeichert ist
4) para4 = Länge des Passworts
Beim zweiten Aufruf mit den gleichen Parametern wird der ursprung wieder hergestellt.
AsmStart Crypt
Parameters addr(text$),Len(text$),addr(passwort$),Len(passwort$)
mov ecx,para2
mov edx,para1
mov ebx,para3
mov esi,para4
mov edi,0
schleife:
mov al,[edx]
xor al,[ebx+edi]
mov [edx],al
inc edx
inc edi
cmp esi,edi
jne sprung
mov edi,0
sprung:
sub ecx,1
jne schleife
AsmEnd
Print "Verschlüsselter Text:"
Print
Color 7,15
Print text$
Color 0,15
Print
Print
Jetzt kommt eine Besonderheit...
Wir rufen unseren ersten ASM-Block ein zweites mal auf !!! Ohne Prozedure !
xpia$ ist der Name unserer kompletten Assemblerlibrary.
Crypt ist hier der Name des Assemblerblocks, danach folgen etventuelle Parameter.
Dabei ist es sogar egal, ob der zweite Aufruf nach dem Assemblerblock erfolgt oder schon davor !
Wer das jetzt nicht verstanden hat, der sollte den ASM-Block Crypt lieber in eine Profan-Prozedure
packen, und stattdessen lieber die Prozedure aufrufen. Aber so wie hier geht es auch.
External(xpia$,"Crypt",addr(text$),Len(text$),addr(passwort$),Len(passwort$))
Print "Und der wieder hergestellte Text:"
Print
Color 7,15
Print text$
WaitInput class=s4 href='./../../function-references/XProfan/end/'>End
|
| | | | |
| | Hubert Binnewies | @Franco
Auch no schlecht.....incluso goil sería Yo sagen.... Nur Yo verwürfel todos aún en uno datei...womit una cracker antes 3 probleme gestellt se.. erstens: como lang son el strings.. wo son el zeichen en el datei y welcher reihenfolge....el erste es kein prob...el es al anfang el datei, el blöde es sólo que aquí genau el zusätzlichen verschlüsselungszahlen addiert fueron...porque sólo lo ergibt se sólo como lang el Feld el Positionszahlen es womit el Positionen el Signo y deren Reihenfolge ergibt.....also no bastante así simplemente...
Aber veces en el ernst....lo sería echt Sinn hacer deine Rutina antes meiner a conjunto y ya se lo echt lustig fürn cracker....qué meinste...si ihm el Haare más rápido nachwachsen como el el Rauft???.... |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 23.04.2006 ▲ |
| |
| | Hubert Binnewies | Mir es todavía qué eingefallen a Positionen el Signo a verschleiern...como voluntad Yo mich morgen veces dransetzen...y luego lo todavía qué sicherer...
Aber veces ne frage......wieso es mein Contribución hier movido worden...el Yo doch bajo einsteigerfragen / Programación reingesetzt....si yo qué búsqueda schaue Yo siempre zuerst darein....bajo el codesnippets findet el doch keiner.... |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 23.04.2006 ▲ |
| |
| | | [quote:b53fcb60e0=Hubert Binnewies]Aber veces ne frage......wieso es mein Contribución hier movido worden...el Yo doch bajo einsteigerfragen / Programación reingesetzt....si yo qué búsqueda schaue Yo siempre zuerst darein....bajo el codesnippets findet el doch keiner....[/quote:b53fcb60e0]Bitte en el Stammtisch puesto, hier sería keiner después de el Antwort suchen. Immer schön beim Thema bleiben. ( Regeln ) |
| | | | |
| | Hubert Binnewies | ¡Hola zusammen....
Yo habe el Routinen todavía qué verfeinert, nun son auch todavía el Positionszahlen verschlüsselt así el una Cracker en cada fall disassmblieren muss así él el el 5 zusätzlichen Pagar erhält...sonst sería él todavía no veces el Positionen el Signo herausbekommen..
Hier el Speicher Rutina: KompilierenMarcaSeparación
Proc Speichern
Parameters Dateiname$, Var1$, Var2$, Var3$, Var4$, Var5$, Var1%, Var2%, Var3%, Var4%, Var5%, Dateiname$
Declare Anzahl%, Datei%, Zähler1%, Zähler2%, Dummy$, Dummy1$, Dummy%, Dummy1%
Anzahl%=Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)
Randomize
Declare Zufall#[Anzahl%+1], Datei#
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Dim Datei#,1024
Zufall#[0].Nummer%=@Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Zufall#[0].Nummer%=Zufall#[0].Nummer%*2
Zähler1%=0
Whileloop Anzahl%+1
Inc Zähler1%
Dummy1%=0
Whilenot Dummy1%
Dummy1%=1
Dummy%=Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Dummy%=Dummy%*2
Zähler2%=0
Whileloop Anzahl%+1
If Dummy%=Zufall#[Zähler2%].Nummer%
Dummy1%=0
endif
Inc Zähler2%
Endwhile
Endwhile
Zufall#[Zähler1%].Nummer%=Dummy%
Endwhile
Whileloop 512
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Word Datei#,0 = Len(Var1$)+Var1%,Len(Var2$)+Var2%,Len(Var3$)+Var3%,Len(Var4$)+Var4%,Len(Var5$)+Var5%
Dummy$=Var1$+Var2$+Var3$+Var4$+Var5$
Whileloop Anzahl%+1
Dummy1$=@Mid$(Dummy$,&loop-1,1)
Dummy%=@Ord(Dummy1$)+&Loop
Word Datei#,Zufall#[&loop-1].Nummer%,Dummy%
Endwhile
Zähler1%=1
Whileloop Anzahl%+1
If Zähler1%=1
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var1%
Endif
If Zähler1%=2
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var2%
Endif
If Zähler1%=3
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var3%
Endif
If Zähler1%=4
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var4%
Endif
If Zähler1%=5
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var5%
Endif
Inc Zähler1%
If Zähler1%=6
Zähler1%=1
Endif
Endwhile
Whileloop Anzahl%+1
Word Datei#,(&Loop-1)*2+10,Zufall#[&Loop-1].Nummer%+&Loop
Endwhile
Assign #1, Dateiname$
OpenRW #1
BlockWrite #1, Datei#, 0, 1024
ENDPROC
Und hier el Laderoutine: KompilierenMarcaSeparación___________ In Diesen Variables son después de Proc Aufruf el en el Expediente
___________ gespeicherten Cuerdas
Declarar Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc Laden
Parámetros Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Declarar Expediente#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, Anzahl%, Zähler%
Dim Expediente#, 1024
Asignar #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, Expediente#, 0, 1024)
CloseRW #1
Varl1%=@Word(Expediente#,0)-Var1%
Varl2%=@Word(Expediente#,2)-Var2%
Varl3%=@Word(Expediente#,4)-Var3%
Varl4%=@Word(Expediente#,6)-Var4%
Varl5%=@Word(Expediente#,8)-Var5%
Anzahl%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Declarar Zufall#[Anzahl%]
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Whileloop Anzahl%+1
Zufall#[&Loop-1].Nummer%=@Word(Expediente#,(&Loop-1)*2+10)
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-&Loop
Endwhile
Zähler%=1
Whileloop Anzahl%+1
IF Zähler%=1
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-Var1%
Endif
IF Zähler%=2
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-Var2%
Endif
IF Zähler%=3
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-Var3%
Endif
IF Zähler%=4
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-Var4%
Endif
IF Zähler%=5
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%-Var5%
Endif
Inc Zähler%
If Zähler%=6
Zähler%=1
Endif
Endwhile
Whileloop Anzahl%
Dummy1$=@chr$(@Word(Expediente#,Zufall#[&Loop].Nummer%)-&Loop-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid$(Dummy2$,&Loop,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
ENDPROC
Viel Spass así |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 24.04.2006 ▲ |
| |
| | Hubert Binnewies | ACHTUNG!!!!
Beim überarbeiten el Rutina para una neues Proggi me está aufgefallen en el dieser Rutina, si uno ellos sabe, el Schlüssel con un Trick en einfachste Art y Weise zurückgerechnet voluntad kann.
Yo arbeite gerade a uno Rutina en el no mehr posible es.
Also : NICHT VERWENDEN !
An IF: Lo wäre ya si du esta Contribución löschen könntest. Wenn Yo el neue Rutina fertig habe eröffne Yo entonces una neuen Contribución.
Gracias
Hubert |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 27.06.2006 ▲ |
| |
| | Michael Wodrich | ¡Hola Hubert, Usted puede Su geposteten Beiträge nachträglich bearbeiten. Am Ende es (unten rechts) Editar.
Si usted el Contribución geändert hast, entonces weist Usted simplemente con un neuen Posting darauf hin, el como ahora algo geändert wurde. El Los cambios bekommt sonst sí keiner con.
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 27.06.2006 ▲ |
| |
| | Hubert Binnewies | ¡Hola zusammen...
Nach 2 Wochen gutem durchbraten en el Sonne de Friedewald (Westerwald) y etwa una Gigabyte a Fotos, bin Yo vollkommen Relaxed otra vez hier. Natürlich Yo mich direkt otra vez a el Rutina para verschlüsseltem Guardar gesetzt y quería hier el fertige Rutina puesto.
Aber primero algo a el Rutina: 1.) Sie bietet Platz para 101 Cuerdas con uno Longitud de a a 50 Signo. 2.) Sie bietet Platz para 101 Integerwerte. 3.) como 2 Schlüssel miteinander verwurstet voluntad, entsteht una riesig langer Schlüssel el, bajo el Voraussetzung el beide Schlüssel unterschiedlich lang son, no Wiederholungen zeigt. Womit aufgrund el astronomisch hohen Möglichkeiten una Brute-Force Angriff praktisch unmöglich se. También se una Rückrechnen el Schlüssel praktisch unmöglich.
Um todos todavía abzurunden sei erwähnt el uno en no Fall el Schlüssel en el Programa unterbringen debería, como uno ellos sonst por Disassamblieren erhält.
Viel Spass con el Rutina, Yo hoffe en viele Kommentare.
Hubert KompilierenMarcaSeparación_________________________________________________________________________________________
Globale Variablen, hier kommen die zu Speichernden Werte hinein
Declare Speicherdaten#[100], Schlüssel$,Schlüssel2$
Struct Nutzdaten = Stringvar$(50), Intvar%
Dim Speicherdaten#[], Nutzdaten
_________________________________________________________________________________________
Beim Aufruf wird noch ein Dateiname (gegebenenfalls mit Pfad) benötigt und ein
beliebig langer Schlüssel (max 235 Zeichen) als String der alle mit der Tastatur
erreichbare Zeichen enthalten darf.
Beispielaufruf :
Whileloop 0,100
Speicherdaten#[&loop].Stringvar$="testdatensatz nummer:"+@Str$(&loop)+" Integerwert:"
Speicherdaten#[&loop].Intvar%=&loop
endwhile
Schlüssel$="AABBCCDDEEFFGG112233445566"
Schlüssel2$="abcdefghijk"
Speichern $Progdir+"INI.DAT",Schlüssel$,Schlüssel2$
cls
print "fertig"
waitinput
_________________________________________________________________________________________
Am Programmende muss noch dies, da sonst der Speicher nicht freigegeben wird.
Dispose Speicherdaten#[]
_________________________________________________________________________________________
Die Speicher Routine
Proc Speichern
Parameters Datei$, Schlüssel$, Schlüssel2$
Declare Speicherstring$, Speicherschlüssel$, Speicherschlüssel1$, Speicherschlüssel2$, Speicherstringverschlüsselt$, Speicherstringlänge%
Declare Zähler1%, Zähler2%, Zähler3%, Dummy1%, Dummy2%, Dummy3%, Datei#, Speicherstringlängecod%
Dim Datei#,30720
Randomize
Whileloop 0,100 <---Bei weniger Datensätze, diese Zahl anpassen
Speicherstring$=Speicherstring$+chr$(len(Speicherdaten#[&loop].Stringvar$))+Speicherdaten#[&loop].Stringvar$+chr$(len(str$(Speicherdaten#[&loop].Intvar%)))+str$(Speicherdaten#[&loop].Intvar%)
EndWhile
Speicherstringlänge%=len(Speicherstring$)+1
Speicherstringlängecod%=Speicherstringlänge%
Whileloop len(Schlüssel$)
Speicherstringlängecod%=Speicherstringlängecod%+ord(mid$(Schlüssel$,&Loop,1))
Endwhile
Declare Zufall%[Speicherstringlänge%]
Whilenot Speicherstringlänge%<len(Speicherschlüssel1$)
Speicherschlüssel1$=Speicherschlüssel1$+Schlüssel$
Endwhile
Whilenot Speicherstringlänge%<len(Speicherschlüssel2$)
Speicherschlüssel2$=Speicherschlüssel2$+Schlüssel2$
Endwhile
WhileLoop 0,Speicherstringlänge%+1
Speicherschlüssel$ = Speicherschlüssel$ + @Chr$(@XOr(@Ord(@Mid$(Speicherschlüssel1$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel2$,&Loop,1))))
EndWhile
WhileLoop 0,Speicherstringlänge%+1
Speicherstringverschlüsselt$ = Speicherstringverschlüsselt$ + @Chr$(@XOr(@Ord(@Mid$(Speicherstring$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel$,&Loop+1,1))))
EndWhile
Clear Datei#
Whileloop Speicherstringlänge%
Dummy2%=&loop
Dummy3%=0
Whilenot Dummy3%
Dummy3%=1
Dummy1%=(Rnd(30710-(Speicherstringlänge%*2)))+10+(Speicherstringlänge%*2)
If @byte(Datei#,Dummy1%)=0
Byte Datei#,Dummy1%=1
Zufall%[Dummy2%]=Dummy1%
else
Dummy3%=0
Endif
Endwhile
Endwhile
Whileloop 0,15359
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Whileloop 0,Speicherstringlänge%-1
Byte Datei#,Zufall%[&Loop]=Ord(mid$(Speicherstringverschlüsselt$,&Loop+1,1))
Endwhile
Word Datei#,0=Speicherstringlängecod%
Whileloop Speicherstringlänge%
Word Datei#,&Loop*2=@XOr(Zufall%[&Loop-1], @Ord(@Mid$(Speicherschlüssel$,&Loop,1)))
Endwhile
Assign #1, Datei$
OpenRW #1
BlockWrite #1, Datei#, 0, 30720
CloseRW #1
ENDPROC
KompilierenMarcaSeparación_________________________________________________________________________________________
Globale Variables, hier kommen el gespeicherten Werte hinein
Declarar Speicherdaten#[100], Schlüssel$, Schlüssel2$, Erfolg%
Struct Nutzdaten = Stringvar$(50), Intvar%
Dim Speicherdaten#[], Nutzdaten
_________________________________________________________________________________________
Beim Aufruf se todavía el Dateiname (quizás con Pfad) benötigt y el
Schlüssel como String.
Rückgabewert: 0=ungültige Expediente (Vorsicht, lo voluntad sólo elementare Dinge geprüft,
sinvoll wäre una Prüfwert)
1=gültige Expediente
Beispielaufruf :
Schlüssel$="AABBCCDDEEFFGG112233445566"
Schlüssel2$="abcdefghijk"
Erfolg%=Laden ($Progdir+"INI.DAT",Schlüssel$,Schlüssel2$)
Testausgabe
cls
whileloop 0,100
imprimir Speicherdaten#[&bucle].Stringvar$;
imprimir " ";
imprimir Speicherdaten#[&bucle].Intvar%
waitinput
endwhile
_________________________________________________________________________________________
Am Programmende muss todavía dies, como sonst el Speicher no freigegeben es.
Disponer Speicherdaten#[]
_________________________________________________________________________________________
El Lade Rutina
Proc Laden
Parámetros Expediente$, Schlüssel$, Schlüssel2$
Declarar Expediente#, Zähler1%, Zähler2%, Zähler3%, Dummy1%, Dummy2%, Dummy3%, Speicherstringlängecod%
Declarar Speicherstring$, Speicherschlüssel$, Speicherschlüssel1$, Speicherschlüssel2$, Speicherstringverschlüsselt$, Speicherstringlänge%
Declarar Falschedatei%
Dim Expediente#,30720
Falschedatei%=1
Asignar #1, Expediente$
OpenRW #1
Dummy1% = @BlockRead(#1, Expediente#, 0, 30720)
CloseRW #1
If Dummy1%<>30720
Falschedatei%=0
Endif
Speicherstringlängecod%=@Word(Expediente#,0)
Whileloop len(Schlüssel$)
Speicherstringlängecod%=Speicherstringlängecod%-ord(mid$(Schlüssel$,&Loop,1))
Endwhile
Speicherstringlänge%=Speicherstringlängecod%
If Speicherstringlänge%>5200
Falschedatei%=0
Endif
If Falschedatei%=0
Volver 0
Endif
Declarar Zufall%[Speicherstringlänge%]
Sinestar encargado Speicherstringlänge%<len(Speicherschlüssel1$)
Speicherschlüssel1$=Speicherschlüssel1$+Schlüssel$
Endwhile
Sinestar encargado Speicherstringlänge%<len(Speicherschlüssel2$)
Speicherschlüssel2$=Speicherschlüssel2$+Schlüssel2$
Endwhile
WhileLoop 0,Speicherstringlänge%+1
Speicherschlüssel$ = Speicherschlüssel$ + @Chr$(@XOr(@Ord(@Mid$(Speicherschlüssel1$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel2$,&Loop,1))))
EndWhile
Whileloop Speicherstringlänge%
Zufall%[&bucle-1]=@XOr(@Word(Expediente#,&bucle*2), @Ord(@Mid$(Speicherschlüssel$,&Loop,1)))
Endwhile
Whileloop 1,Speicherstringlänge%
Speicherstring$=Speicherstring$+chr$(@XOr(@byte(Expediente#,Zufall%[&bucle-1]), @Ord(@Mid$(Speicherschlüssel$,&Loop,1))))
Endwhile
Zähler1%=2
Whileloop 0,100 <--- En weniger Datensätze, esta Zahl adaptar
Dummy1%=@Ord(@Mid$(Speicherstring$,Zähler1%,1))
Speicherdaten#[&bucle].Stringvar$=@Mid$(Speicherstring$,Zähler1%+1,Dummy1%)
Dummy2%=@Ord(@Mid$(Speicherstring$,Zähler1%+1+Dummy1%,1))
Speicherdaten#[&bucle].Intvar%=Val(@Mid$(Speicherstring$,Zähler1%+2+Dummy1%,Dummy2%))
Zähler1%=Zähler1%+2+Dummy1%+Dummy2%
EndWhile
Volver 1
ENDPROC
|
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 24.07.2006 ▲ |
| |
|
Zum QuelltextThemeninformationenDieses Thema ha 5 subscriber: |