Français
Source/ Codesnippets

Sauver Verschlüsseltes

 

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éparation
Speichern "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éparation
magasin "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éparation
Superschnelles 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$
WaitInputclass=s4 href='./../../function-references/XProfan/end/'>Fin
 
23.04.2006  
 




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 )
 
23.04.2006  
 




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,  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 Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

7.840 Views

Untitledvor 0 min.
Gast.081526.08.2024
PETER195618.07.2018
Georg Teles09.01.2016
Michael Borowiak15.11.2014
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie