Français
Forum

Probleme avec qui Password Funktion

 

Dirk
Kuntzmann
allô Profaner,

j'ai aujourd'hui begonnen un Progrann plus trop écrivons, dass je 2005 begonnen hatte (probablement Profan9). autrefois lief cela Programme einwandfrei. aujourd'hui gibt es anscheinend un Problem avec qui Password-Funktion wobei je pas glaube cela qui faute im Programme liegt, là ca bereits einwandfrei gearbeitet hat. Getestet habe je es aujourd'hui sous Windows2000 et Windows XP. und dir ici à Verschlüsselung / Entschlüsselung de dBase-Tabellen. Folgender Programmausschnitt sollte cela Problem montrer:
KompilierenMarqueSéparation
declare schrift%,feld$[5],datei$
DECLARE TEXT4&

proc testdateien_erstellen

    assign #1,artikel.str
    rewrite #1
    print #1,ARTIKEL;C;50;0
    print #1,GRUPPE;C;50;0
    print #1,KCAL;C;5;0
    print #1,PORTION;C;3;0
    close #1
    sleep 500
    db(create,artikel.str,test.dbf)

    if datei$=test.dbf

        dbopen(#1,datei$)
        db(go,|<)

        whilenot &dbRecNo=6

            db(appendblank)
            dbput(ARTIKEL,Name)
            dbput(GRUPPE,Gruppe)
            dbput(KCAL,500)
            dbput(PORTION,100)
            dbputrec(0)

        endwhile

        dbgo(5)

    else

        dbopen(#1,datei$)
        dbgo(5)

    endif

    settext text4&,trim$(dbget$(ARTIKEL))
    dbclose(#1)
    copy test.dbf > test1.dbf
    datei$=test1.dbf

endproc

proc rueckschluesseln

    DECLARE DLG&,DIALOGENDE%
    DECLARE TEXT1&,TEXT7&
    DECLARE TEXT2&,Text8&
    DECLARE TEXT3&
    DECLARE EDIT1&
    DECLARE TEXT5&,text6&
    DECLARE BUTTON1&,Button3&
    DECLARE BUTTON2&
    DLG&=CREATE(DIALOG,%HWND,Datenbank rückschlüsseln,351,293,292,213)
    TEXT7& =@CREATE(TEXT,DLG&,Quelle/Ziel:,0010,0010,0100,0020)
    TEXT1& =@CREATE(TEXT,DLG&,Daten vorher:,0010,0040,0100,0020)
    TEXT2& =@CREATE(TEXT,DLG&,Schlüssel:,0010,0070,0100,0020)
    TEXT3& =@CREATE(TEXT,DLG&,Daten nachher:,0010,0120,0100,0020)
    TEXT4& =@CREATE(TEXT,DLG&,,0115,0040,0150,0020)
    EDIT1& =@CREATE(EDIT,DLG&,,0115,0070,0150,0020)
    TEXT5& =@CREATE(TEXT,DLG&,,0115,0120,0150,0020)
    TEXT8& =@CREATE(TEXT,DLG&,,0010,0125,0150,0020)
    text6& =@CREATE(TEXT,DLG&,1. mit Reg-Code;2. mit 12345,0115,0090,0150,0020)
    BUTTON3& =@CREATE(BUTTON,DLG&,>,0110,0010,0020,0024)
    BUTTON1& =@CREATE(BUTTON,DLG&,OK,0010,0150,0070,0024)
    BUTTON2& =@CREATE(BUTTON,DLG&,Abbruch,0100,0150,0070,0024)
    SETFOCUS(edit1&)
    LET DIALOGENDE%=0

    WHILENOT DIALOGENDE%

        WAITINPUT

        If @EQU(%KEY,2)

            LET DIALOGENDE%= 1

        ELSEIF clicked(BUTTON1&) BUTTON

            if trim$(gettext$(edit1&))=

                setfocus(edit1&)

            else

                dbopen(#1,datei$)
                dbgo(|<)

                whilenot %dbeof

                    clear feld$[]
                    PASSWORD trim$(gettext$(edit1&))
                    feld$[1]=pwd$(trim$(dbget$(ARTIKEL)))
                    feld$[2]=pwd$(trim$(dbget$(GRUPPE)))
                    feld$[3]=pwd$(trim$(dbget$(KCAL)))
                    feld$[4]=pwd$(trim$(dbget$(PORTION)))
                    password
                    dbput(ARTIKEL,pwd$(feld$[1]))
                    dbput(GRUPPE,pwd$(feld$[2]))
                    dbput(KCAL,pwd$(feld$[3]))
                    dbput(PORTION,pwd$(feld$[4]))
                    dbputrec(0)
                    dbgo(>)

                wend

                dbclose(#1)
                sleep 500
                dbopen(#1,datei$)
                dbgo(5)
                settext text5&,trim$(dbget$(ARTIKEL))
                dbclose(#1)
                settext edit1&,

            endif

        ELSEIF clicked(BUTTON3&) BUTTON

            datei$=LoadFile$(Umschlüsseln von:,Test*.dbf)

            if datei$=test.dbf

                dbopen(#1,datei$)
                db(go,|<)

                whilenot &dbRecNo=6

                    db(appendblank)
                    dbput(ARTIKEL,Name)
                    dbput(GRUPPE,Gruppe)
                    dbput(KCAL,500)
                    dbput(PORTION,100)
                    dbputrec(0)

                endwhile

                dbgo(5)

            else

                dbopen(#1,datei$)
                dbgo(5)

            endif

            settext text4&,trim$(dbget$(ARTIKEL))
            dbclose(#1)

        ELSEIF clicked(BUTTON2&) BUTTON

            LET DIALOGENDE%= 1

        ENDIF

    WEND

    @DESTROYWINDOW(DLG&)

endproc

cls RGB(23,23,23)
traceon
showmax
let schrift%=create(font,Comic sans MS,16,0,0,0,0)
SETDIALOGFONT schrift%
datei$=test.dbf
testdateien_ers
rueckschluesseln end

je hoffe, j'ai qui einzelenen Ausschnitte richtig zusammen gestrickt. Pour dem Start volonté Testdateien erstellt. ensuite erscheint un Dialog. chez klick sur den flèche erscheint une Dateiauswahl. s'il te plaît qui Test.dbf choisir. ensuite wird im Dialog un Datenfeld angezeigt (unverschlüsselt nom). maintenant peux un Schlüssel eingegeben volonté z. B. 1. Pour qui Bestätigung avec OK volonté qui Datensätze verschlüsselt et cela gleiche champ wieder angezeigt. Gibt on maintenant wieder comme Schlüssel une 1 un, devrait qui Verschlüsselung rückgängig gemacht volonté. malheureusement fehlt qui erste Buchstabe. Gleiches passiert chez qui Eingabe eines individuel a. Gibt on z. B. 12345 un arbeitet alles korrekt. chez alphabet mais pas. ici ist une entschlüsselung gar pas possible. là dans qui Aider aussi aucun Einschränkungen gemacht volonté comment un Password air soll et je crois, dass cela déjà einmal funktioniert hat, denke je presque, cela es sich um un Problem pour Roland handelt. mais peut-être übersehe je aussi seulement quelque chose. Pour une Tipp wäre je reconnaissant.

Salut Dirk
 
27.07.2007  
 




Michael
Wodrich
Testdateien_erstellen greift sur un Dialogfeld trop, qui seulement dans qui folgenden Procédure erstellt wird.
je prends à, dass Du cette Codeschnipsel pas getestet la hâte.

2 Tipps:
a) sende une fonctionnement Code
(Button 1 entschlüsselt den Detenbankinhalt, qui mais nirgendwo verschlüsselt wird)
b) speichere qui Umsetzungen/Funktionsergebnisse dans einer Variablen et benutze ausschließlich cet Variable derrière PASSWORD. So peux Du cela, quoi à Password transfert wird auparavant zur Prüfung Montrer laisser.
c'est aussi possible, cela PASSWORD ici quelque chose sensibel reagiert, quoi qui Longueur des Passwortes angeht. on sollte grundsätzlich aucun Passworte benutzen qui kürzer comme 8 marque sommes. qui 4stelligen Pins qui Banken sommes un Sicherheits-Traumschloss. Diesen 4-payons-Code peux on avec einer hohen Trefferquote sogar deviner.

Lass simple den ordinateur la fois une 4stellige numéro ermitteln et versuche 100x vous trop deviner. qui Nombre de Treffer sagt Dir qui prozentuale Trefferquote. Du wirst staunen.

belle Grüße
Michael Wodrich

Nachtrag:
Mir ist seulement maintenant aufgefallen, cela Du avec gesetztem PASSWORD qui Datenbankinhalte entschlüsselst um vous ensuite avec gelöschtem wieder par qui Schlüsselfunktion trop envoyons.
Besser ist es si Du qui Dossier unverschlüsselt ensuite sans PWD$() speicherst et pour cela Verschlüsseln une eigene Routine écris. dans qui de Dir angegebenen forme marcher beide Richtungen pas.
 
Programmieren, das spannendste Detektivspiel der Welt.
27.07.2007  
 




Michael
Wodrich
AUTSCH

qui faute liegt entier simple dans qui TRIM$()-Funktion. vous entfernt aussi Steuerzeichen, qui im PWD-String mais vorkommen.

c'est dans qui Aider chez Trim$ sans équivoque anders beschrieben !!!

ici qui Testcode:
KompilierenMarqueSéparation
declare schrift%,feld$[5],datei$
DECLARE TEXT4&

proc testdateien_erstellen

    assign #1,artikel.str
    rewrite #1
    print #1,ARTIKEL;C;50;0
    print #1,GRUPPE;C;50;0
    print #1,KCAL;C;5;0
    print #1,PORTION;C;3;0
    close #1
    sleep 500
    db(create,artikel.str,test.dbf)

    if datei$=test.dbf

        dbopen(#1,datei$)
        db(go,|<)

        whilenot &dbRecNo=6

            db(appendblank)
            dbput(ARTIKEL,Name)
            dbput(GRUPPE,Gruppe)
            dbput(KCAL,500)
            dbput(PORTION,100)
            dbputrec(0)

        endwhile

        dbgo(5)

    else

        dbopen(#1,datei$)
        dbgo(5)

    endif

    settext text4&,trim$(dbget$(ARTIKEL))
    dbclose(#1)
    copy test.dbf > test1.dbf
    datei$=test1.dbf

endproc

proc rueckschluesseln

    DECLARE DLG&,DIALOGENDE%
    DECLARE TEXT1&,TEXT7&
    DECLARE TEXT2&,Text8&
    DECLARE TEXT3&
    DECLARE EDIT1&
    DECLARE TEXT5&,text6&
    DECLARE BUTTON1&,Button3&
    DECLARE BUTTON2&
    DLG&=CREATE(DIALOG,%HWND,Datenbank rückschlüsseln,351,293,292,213)
    TEXT7& =@CREATE(TEXT,DLG&,Quelle/Ziel:,0010,0010,0100,0020)
    TEXT1& =@CREATE(TEXT,DLG&,Daten vorher:,0010,0040,0100,0020)
    TEXT2& =@CREATE(TEXT,DLG&,Schlüssel:,0010,0070,0100,0020)
    TEXT3& =@CREATE(TEXT,DLG&,Daten nachher:,0010,0120,0100,0020)
    TEXT4& =@CREATE(TEXT,DLG&,,0115,0040,0150,0020)
    EDIT1& =@CREATE(EDIT,DLG&,,0115,0070,0150,0020)
    TEXT5& =@CREATE(TEXT,DLG&,,0115,0120,0150,0020)
    TEXT8& =@CREATE(TEXT,DLG&,,0010,0125,0150,0020)
    text6& =@CREATE(TEXT,DLG&,1. mit Reg-Code;2. mit 12345,0115,0090,0150,0020)
    BUTTON3& =@CREATE(BUTTON,DLG&,>,0110,0010,0020,0024)
    BUTTON1& =@CREATE(BUTTON,DLG&,OK,0010,0150,0070,0024)
    BUTTON2& =@CREATE(BUTTON,DLG&,Abbruch,0100,0150,0070,0024)
    SETFOCUS(edit1&)
    LET DIALOGENDE%=0

    WHILENOT DIALOGENDE%

        WAITINPUT

        If @EQU(%KEY,2)

            LET DIALOGENDE%= 1

        ELSEIF clicked(BUTTON1&)BUTTON

            if trim$(gettext$(edit1&))=

                setfocus(edit1&)

            else

                dbopen(#1,datei$)
                dbgo(|<)

                whilenot %dbeof

                    clear feld$[]
                    PASSWORD trim$(gettext$(edit1&))
                    feld$[1]=pwd$(trim$(dbget$(ARTIKEL)))
                    --- debug-code -------

                    whileloop len(feld$[1])

                        print format$(#0,ord(mid$(feld$[1],&loop,1)));,;

                    endwhile

                    print  len=,format$(#0,len(feld$[1]))
                    feld$[1] = trim$(feld$[1])

                    whileloop len(feld$[1])

                        print format$(#0,ord(mid$(feld$[1],&loop,1)));,;

                    endwhile

                    print  len=,format$(#0,len(feld$[1]))
                    --- debug-code ENDE-------
                    feld$[2]=pwd$(trim$(dbget$(GRUPPE)))
                    feld$[3]=pwd$(trim$(dbget$(KCAL)))
                    feld$[4]=pwd$(trim$(dbget$(PORTION)))
                    dbput(ARTIKEL,feld$[1])
                    dbput(GRUPPE,feld$[2])
                    dbput(KCAL,feld$[3])
                    dbput(PORTION,feld$[4])
                    dbputrec(0)
                    dbgo(>)

                wend

                dbclose(#1)
                sleep 500
                dbopen(#1,datei$)
                dbgo(5)
                settext text5&,trim$(dbget$(ARTIKEL))
                dbclose(#1)
                settext edit1&,

            endif

        ELSEIF clicked(BUTTON3&)BUTTON

            datei$=LoadFile$(Umschlüsseln von:,Test*.dbf)

            if datei$=test.dbf

                dbopen(#1,datei$)
                db(go,|<)

                whilenot &dbRecNo=6

                    db(appendblank)
                    dbput(ARTIKEL,Name)
                    dbput(GRUPPE,Gruppe)
                    dbput(KCAL,500)
                    dbput(PORTION,100)
                    dbputrec(0)

                endwhile

                dbgo(5)

            else

                dbopen(#1,datei$)
                dbgo(5)

            endif

            settext text4&,trim$(dbget$(ARTIKEL))
            dbclose(#1)

        ELSEIF clicked(BUTTON2&)BUTTON

            LET DIALOGENDE%= 1

        ENDIF

    WEND

    @DESTROYWINDOW(DLG&)

endproc

cls RGB(23,23,23)
traceon
showmax
let schrift%=create(font,Comic sans MS,16,0,0,0,0)
SETDIALOGFONT schrift%
datei$=test.dbf
rueckschluesseln
end

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
27.07.2007  
 




Dirk
Kuntzmann
allô Michael,

vielen Dank pour deine schnelle Antwort. à qui Trim-Funktion J'ai eu pas gedacht. Bleibt qui Frage si cela so richtig et gewollt ist ou bien si es sich hierbei um une kleinen faute handelt. je suis nämlich fest qui attitude, dass cette partie früher funktioniert hat.

avec qui Sicherheit qui Passwörter la hâte du naturellement droite, qui sommes normalement aussi länger, j'ai maintenant seulement kurze gewählt, um cela Problem trop verdeutlichen. Z. B. alphabet schneidet den ersten Buchstaben beim Entschlüsseln ab, au cours de cba funktioniert. A0E96519 wiederum peut sich pas du tout plus entschlüsseln. là qui Passwörter mais de chaque ordinateur anders zusammen gesetzt volonté habe je keinen Einfluss puis quel Buchstabe ou bien quelle numéro wohin dans dem Mot de passe auftaucht.

il y a somit probablement seulement deux Opportunités: 1. je attends sur une bordure-Funktion qui rien wegschneidet ou bien je versuche cela Programme so trop verändern, dass chez allen Mot de passe-Funktionen qui Trim-Funktion pas genutzt et anders realisiert wird. la première Solution finde je mais deutlich angenehmer.

Salut Dirk
 
27.07.2007  
 




Dieter
Zornow
Versuchs la fois avec qui Api StrTrim, je denke qui sollte marcher
KompilierenMarqueSéparation
Def StrTrim(2) !SHLWAPI,StrTrimA

Proc ATrim

    parameters besearch$,Char$
    declare besearch#,result$
    Dim besearch#,len(besearch$)+1
    string besearch#,0 = besearch$
    StrTrim(besearch#,addr(char$))
    result$ = string$(besearch#,0)
    dispose besearch#
    return result$

endproc

cls
print ATrim(  Test.exe  , )
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
27.07.2007  
 




Dirk
Kuntzmann
allô Dieter,

Vielen Dank, de Apis habe je malheureusement je n'en sais rien, mais cela quoi du là gezaubert hat billet super trop marcher. Bleibt qui Frage, si qui Profan eigene bordure-Funktion eh bien une faute hat ou bien si sich derrière elle un Sinn verbirgt.

Salut Dirk
 
27.07.2007  
 




Dirk
Kuntzmann
P.S. Au cours de on qui normale Trim-Funktion de qui Geschwindigkeit her à peine wahrnimmt, ist qui Api-Variant très lente (chez seulement knapp 600 Datensätzen hat on cela sentiment, dass qui calculateur stehen geblieben ist).

Salut Dirk
 
27.07.2007  
 




Jörg
Sellmeyer
tu peux den Bereich global déclarer et dimensionieren. Dadurch wird qui Procédure wahrscheinlich quelque chose plus rapide:
KompilierenMarqueSéparation
Def StrTrim(2) !SHLWAPI,StrTrimA
Declare besearch#
Dim besearch#,24MaximaleZuErwartendeStringlänge%

Proc ATrim

    parameters besearch$,Char$
    string besearch#,0 = besearch$
    StrTrim(besearch#,addr(char$))
    return string$(besearch#,0)

endproc

Print ATrim( test, )
nput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.07.2007  
 



10.000 derartige Operationen besoin chez mir 750ms

trop testen sur
KompilierenMarqueSéparation
 {$cleq}
Def StrTrim(2) !SHLWAPI,StrTrimA
Declare besearch#
Dim besearch#,24MaximaleZuErwartendeStringlänge%

Proc ATrim

    parameters besearch$,Char$
    string besearch#,0 = besearch$
    StrTrim(besearch#,addr(char$))
    return string$(besearch#,0)

endproc

var l&=&gettickcount

whileloop 10000

    ATrim( test, )

wend

print &gettickcount-l&
WaitInput
KompilierenMarqueSéparation et sollte imho aussi marcher, car son braucht garnicht nochmals grenier reservieren si son doch déjà genügend grenier avez. (car Trim wird den String à peine agrandir)  
 
27.07.2007  
 



répondre


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

1.827 Views

Untitledvor 0 min.
Walter08.03.2016
funkheld25.05.2012
Andreas Koch16.12.2011

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