Source/ Codesnippets | | | | Hubert Binnewies | allô zusammen...
je weiss...euch Profan Profis erzähle je nix nouveau, mais pour nen Débutant pourrait que voici intéressant son (suis schliesslich selber un Débutant).
je suis au qui Verlegenheit gekommen quelques Cordes verschlüsselt trop Sauver um vous avant neugierigen Augen trop protéger. tout autor habe je cet Routine geschrieben. vous ist pas unknackbar, mais qui meisten volonté une Disassambler brauchen um puis trop venons.
Erstmal qui Speicherroutine:
un möglicher Aufruf wäre KompilierenMarqueSéparationSpeichern "Daten.dat", String1$,String2$,String3$,String4$,String5$,Zahl1%,Zahl2%,Zahl3%,Zahl4%,Zahl5% > Wobei qui 5 payons qui weiteren Verschlüsselung dienen et erstens Integer et zweitens im Bereich entre 1 et etwa 65400 liegen devrait. et qui 5 Cordes devrait une maximum Longueur de 200 pas überschreiten (quelque chose länger allez déjà mais ensuite wirds entschlüsselbar) et chez etwa 235 plus minus un paire ist entier Schluss.
ici qui grenier Routine: KompilierenMarqueSéparation
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
cet Routine erzeugt une Dossier de exakt einem Kilobyte qui principale avec Zufallswerten pleine wird entre denen qui Nutzwerte durcheinandergewürfelt et modifié versteckt sommes.
Bien sûr muss on cela aussi wieder auseinanderpflücken peut:
un möglicher Aufruf: KompilierenMarqueSéparationmagasin "Daten.dat",numéro1%, numéro2%, numéro3%, numéro4%, numéro5%
Wobei cet 5 Nummern qui plan dessus beschriebenen sommes
ici qui Laderoutine: KompilierenMarqueSéparation___________ dans Diesen Variablen sommes pour Proc Aufruf qui dans qui Dossier
___________ gespeicherten Cordes
Déclarer Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc magasin
Paramètres Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Déclarer Dossier#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, Anzahl%
Faible Dossier#, 1024
Assign #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, Dossier#, 0, 1024)
CloseRW #1
Varl1%=@Word(Dossier#,0)-Var1%
Varl2%=@Word(Dossier#,2)-Var2%
Varl3%=@Word(Dossier#,4)-Var3%
Varl4%=@Word(Dossier#,6)-Var4%
Varl5%=@Word(Dossier#,8)-Var5%
Anzahl%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Déclarer Zufall#[Anzahl%]
Struct Zufallnr = numéro%
Faible Zufall#[], Zufallnr
Whileloop Anzahl%+1
Zufall#[&Boucle-1].numéro%=@Word(Dossier#,(&Boucle-1)*2+10)
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-&Boucle
Endwhile
Whileloop Anzahl%
Dummy1$=@chr$(@Word(Dossier#,Zufall#[&Boucle].numéro%)-&Boucle-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid $(Dummy2$,&Boucle,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
ENDPROC
Viel Spass avec cela |
| | | 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 je juste aus!
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 | belle travail .
dans dem Zusammenhang meinen Verschlüsselungscode aus den XPIA Beispielen. il richtet sich dans erster ligne number mais à User avec erweiteren Programmkenntnissen, pour qui Geschwindigkeit important ist zusammen avec einem relativ sicheren Passwortschutz. KompilierenMarqueSéparationSuperschnelles 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/'>Fin
|
| | | | |
| | Hubert Binnewies | @Frank
aussi pas mal.....sogar goil serait je dire.... seulement je verwürfel cela ganze encore dans einer fichier...womit un cracker avant 3 probleme gestellt wird.. erstens: comment long sommes qui strings.. wohin sommes qui marque dans qui fichier et dans quel reihenfolge....cela erste ist ne...aucune prob...cela steht am anfang qui fichier, cela blöde ist seulement que voici oui c'est ca qui zusätzlichen verschlüsselungszahlen addiert wurden...car seulement daraus ergibt sich seulement comment long cela champ qui Positionszahlen ist womit sich qui Positionen qui marque et en Reihenfolge ergibt.....alors pas entier so simple...
mais la fois im ernst....es serait vraie Sinn faire deine Routine avant meiner trop mettons et déjà wird es vraie lustig fürn cracker....quoi meinste...si ihm qui Haare plus rapide nachwachsen comme qui sich qui 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 ist encore quoi eingefallen à Positionen qui marque trop verschleiern...là werde je mich demain la fois dransetzen...et ensuite wird es encore quoi sicherer...
mais la fois ne frage......wieso ist mon Beitrag ici déménagé worden...den habe je doch sous einsteigerfragen / Programmation reingesetzt....si je quoi cherche schaue je toujours d'abord darein....sous den codesnippets findet cela doch aucun.... |
| | | 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-part:b53fcb60e0=Hubert Binnewies]mais la fois ne frage......wieso ist mon Beitrag ici déménagé worden...den habe je doch sous einsteigerfragen / Programmation reingesetzt....si je quoi cherche schaue je toujours d'abord darein....sous den codesnippets findet cela doch aucun....[/quote-part:b53fcb60e0]s'il te plaît im Stammtisch posten, ici serait aucun pour qui Antwort chercher. toujours joli beim Thema rester. ( Regeln ) |
| | | | |
| | Hubert Binnewies | allô zusammen....
j'ai qui Routinen encore quoi verfeinert, eh bien sommes aussi encore qui Positionszahlen verschlüsselt so cela un Cracker sur jeden le cas disassmblieren muss avec cela il qui qui 5 zusätzlichen payons erhält...sonst serait il encore pas fois le Positionen qui marque herausbekommen..
ici qui grenier Routine: KompilierenMarqueSéparation
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
et ici qui Laderoutine: KompilierenMarqueSéparation___________ dans Diesen Variablen sommes pour Proc Aufruf qui dans qui Dossier
___________ gespeicherten Cordes
Déclarer Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc magasin
Paramètres Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Déclarer Dossier#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, Anzahl%, Zähler%
Faible Dossier#, 1024
Assign #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, Dossier#, 0, 1024)
CloseRW #1
Varl1%=@Word(Dossier#,0)-Var1%
Varl2%=@Word(Dossier#,2)-Var2%
Varl3%=@Word(Dossier#,4)-Var3%
Varl4%=@Word(Dossier#,6)-Var4%
Varl5%=@Word(Dossier#,8)-Var5%
Anzahl%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Déclarer Zufall#[Anzahl%]
Struct Zufallnr = numéro%
Faible Zufall#[], Zufallnr
Whileloop Anzahl%+1
Zufall#[&Boucle-1].numéro%=@Word(Dossier#,(&Boucle-1)*2+10)
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-&Boucle
Endwhile
Zähler%=1
Whileloop Anzahl%+1
IF Zähler%=1
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-Var1%
Endif
IF Zähler%=2
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-Var2%
Endif
IF Zähler%=3
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-Var3%
Endif
IF Zähler%=4
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-Var4%
Endif
IF Zähler%=5
Zufall#[&Boucle-1].numéro%=Zufall#[&Boucle-1].numéro%-Var5%
Endif
Inc Zähler%
Si Zähler%=6
Zähler%=1
Endif
Endwhile
Whileloop Anzahl%
Dummy1$=@chr$(@Word(Dossier#,Zufall#[&Boucle].numéro%)-&Boucle-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid $(Dummy2$,&Boucle,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid $(Dummy2$,&Boucle+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
ENDPROC
Viel Spass avec cela |
| | | 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 réviser qui Routine pour un nouveau Proggi c'est moi aufgefallen cela chez cette Routine, si on elle connaît, qui Schlüssel avec einem Trick sur einfachste Art et Weise zurückgerechnet volonté peux.
je travaille justement à einer Routine chez qui cela pas plus possible ist.
alors : NICHT VERWENDEN !
à IF: Es wäre déjà si du cette Beitrag effacer könntest. si je qui neue Routine fertig habe eröffne je ensuite une neuen Beitrag.
merci
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 | allô Hubert, tu peux Votre geposteten Posts nachträglich Travailler. Am Ende steht (unten à droite) éditer.
si Du den Beitrag geändert la hâte, ensuite weist Du simple avec einem neuen Posting puis hin, cela là maintenant quelque chose geändert wurde. qui Changements bekommt sonst oui aucun avec.
belle Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 27.06.2006 ▲ |
| |
| | Hubert Binnewies | allô zusammen...
Pour 2 Wochen gutem durchbraten dans qui soleil de Friedewald (Westerwald) et etwa einem Gigabyte à Fotos, suis je vollkommen Relaxed wieder ici. Bien sûr habe je mich direct wieder à qui Routine zum verschlüsseltem Sauver gesetzt et voulais ici qui fertige Routine posten.
mais erstmal quelque chose trop qui Routine: 1.) vous bietet place pour 101 Cordes avec einer Longueur de jusque 50 marque. 2.) vous bietet place pour 101 Integerwerte. 3.) là 2 Schlüssel miteinander verwurstet volonté, entsteht un riesig long Schlüssel qui, sous qui Voraussetzung cela beide Schlüssel unterschiedlich long sommes, aucun Wiederholungen zeigt. Womit aufgrund qui astronomisch hohen Opportunités un Brute-Force Angriff pratique unmöglich wird. Ebenso wird un Rückrechnen qui Schlüssel pratique unmöglich.
Um cela ganze encore abzurunden sei erwähnt cela on sur keinen le cas qui Schlüssel im Programme unterbringen sollte, là on vous sonst par Disassamblieren erhält.
Viel Spass avec qui Routine, je hoffe sur viele Kommentare.
Hubert KompilierenMarqueSéparation_________________________________________________________________________________________
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
KompilierenMarqueSéparation_________________________________________________________________________________________
Globale Variablen, ici venons qui gespeicherten Werte hinein
Déclarer Speicherdaten#[100], Schlüssel$, Schlüssel2$, Erfolg%
Struct Nutzdaten = Stringvar$(50), Intvar%
Faible Speicherdaten#[], Nutzdaten
_________________________________________________________________________________________
Beim Aufruf wird encore qui Dateiname (peut-être avec Pfad) nécessaire et qui
Schlüssel comme String.
Rückgabewert: 0=ungültige Dossier (attention, es volonté seulement elementare Dinge geprüft,
sinvoll wäre un Prüfwert)
1=gültige Dossier
Beispielaufruf :
Schlüssel$="AABBCCDDEEFFGG112233445566"
Schlüssel2$="abcdefghijk"
Erfolg%=magasin ($Progdir+"INI.DAT",Schlüssel$,Schlüssel2$)
Testausgabe
cls
whileloop 0,100
imprimer Speicherdaten#[&loop].Stringvar$;
imprimer " ";
imprimer Speicherdaten#[&loop].Intvar%
waitinput
endwhile
_________________________________________________________________________________________
Am Programmende muss encore ca, là sonst qui grenier pas freigegeben wird.
Dispose Speicherdaten#[]
_________________________________________________________________________________________
qui Lade Routine
Proc magasin
Paramètres Dossier$, Schlüssel$, Schlüssel2$
Déclarer Dossier#, Zähler1%, Zähler2%, Zähler3%, Dummy1%, Dummy2%, Dummy3%, Speicherstringlängecod%
Déclarer Speicherstring$, Speicherschlüssel$, Speicherschlüssel1$, Speicherschlüssel2$, Speicherstringverschlüsselt$, Speicherstringlänge%
Déclarer Falschedatei%
Faible Dossier#,30720
Falschedatei%=1
Assign #1, Dossier$
OpenRW #1
Dummy1% = @BlockRead(#1, Dossier#, 0, 30720)
CloseRW #1
Si Dummy1%<>30720
Falschedatei%=0
Endif
Speicherstringlängecod%=@Word(Dossier#,0)
Whileloop len(Schlüssel$)
Speicherstringlängecod%=Speicherstringlängecod%-ord(mid$(Schlüssel$,&Boucle,1))
Endwhile
Speicherstringlänge%=Speicherstringlängecod%
Si Speicherstringlänge%>5200
Falschedatei%=0
Endif
Si Falschedatei%=0
Retour 0
Endif
Déclarer 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$,&Boucle,1)), @Ord(@Mid $(Speicherschlüssel2$,&Boucle,1))))
Endwhile
Whileloop Speicherstringlänge%
Zufall%[&loop-1]=@XOr(@Word(Dossier#,&loop*2), @Ord(@Mid $(Speicherschlüssel$,&Boucle,1)))
Endwhile
Whileloop 1,Speicherstringlänge%
Speicherstring$=Speicherstring$+chr$(@XOr(@byte(Dossier#,Zufall%[&loop-1]), @Ord(@Mid $(Speicherschlüssel$,&Boucle,1))))
Endwhile
Zähler1%=2
Whileloop 0,100 <--- chez moins Datensätze, cet numéro anpassen
Dummy1%=@Ord(@Mid $(Speicherstring$,Zähler1%,1))
Speicherdaten#[&loop].Stringvar$=@Mid $(Speicherstring$,Zähler1%+1,Dummy1%)
Dummy2%=@Ord(@Mid $(Speicherstring$,Zähler1%+1+Dummy1%,1))
Speicherdaten#[&loop].Intvar%=Val(@Mid $(Speicherstring$,Zähler1%+2+Dummy1%,Dummy2%))
Zähler1%=Zähler1%+2+Dummy1%+Dummy2%
Endwhile
Retour 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 QuelltextOptions du sujet | 7.832 Views |
Themeninformationencet Thema hat 5 participant: |