Español
Foro

Problemas con el Password Función

 

Dirk
Kuntzmann
¡Hola Profaner,

Yo heute comenzó una Progrann más a escribir, dass Yo 2005 comenzó hatte (vermutlich Profano9). Damals lief el Programa einwandfrei. Heute hay anscheinend una Problema con el Password-Función wobei Yo no glaube el el Fehler en el Programa liegt, como dies ya einwandfrei gearbeitet ha. Getestet Yo lo heute bajo Windows2000 y Windows XP. Lo va hier a Verschlüsselung / Entschlüsselung de dBase-Tabellen. Folgender Programmausschnitt debería el problema zeigen:
KompilierenMarcaSeparación
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

Yo hoffe, Yo el einzelenen Ausschnitte correcto zusammen gestrickt. Nach el Start voluntad Testdateien erstellt. Dann erscheint una Diálogo. En klick en el Pfeil erscheint una Dateiauswahl. Bitte el Test.dbf wählen. Dann se en el Diálogo una Datenfeld adecuado (unverschlüsselt Name). Jetzt kann una Schlüssel eingegeben voluntad z. B. 1. Nach el Bestätigung con OK voluntad el Datensätze verschlüsselt y el gleiche Feld otra vez adecuado. Gibt uno otra vez como Schlüssel una 1 una, debería el Verschlüsselung rückgängig gemacht voluntad. Leider fehlt el erste Buchstabe. Gleiches passiert en Eingabe uno individual a. Gibt uno z. B. 12345 una arbeitet alles korrekt. En abc pero no. Hier es una entschlüsselung nada posible. Como en el Ayuda auch no Einschränkungen gemacht voluntad como una Password aussehen se y yo glaube, dass el ya una vez funktioniert ha, denke Yo fast, el es una Problema para Roland es. Aber tal vez übersehe Yo auch sólo algo. Für una Tipp wäre Yo dankbar.

Saludo Dirk
 
27.07.2007  
 




Michael
Wodrich
Testdateien_erstellen greift en una Dialogfeld a, daß sólo en el folgenden Procedimiento erstellt se.
Yo nehme a, dass Usted esta Codeschnipsel no getestet hast.

2 Tipps:
a) sende una funcionamiento Code
(Button 1 entschlüsselt el Detenbankinhalt, el aber nirgendwo verschlüsselt se)
b) speichere el Umsetzungen/Funktionsergebnisse en uno Variables y benutze ausschließlich esta Variable hinter PASSWORD. So kannst Usted el, qué a Password transferencia se vorher a Prüfung Mostrar dejar.
Es auch posible, el PASSWORD hier algo sensibel reagiert, lo que el Longitud des Passwortes angeht. Man debería grundsätzlich no Passworte benutzen el kürzer como 8 Signo son. El 4stelligen Pins el Banken son una Sicherheits-Traumschloss. Diesen 4-Pagar-Code puede ser con uno hohen Trefferquote incluso erraten.

Lass simplemente el Computer veces una 4stellige Zahl ermitteln y versuche 100x ellos a erraten. El Anzahl el Treffer sagt Usted el prozentuale Trefferquote. Usted wirst staunen.

Schöne Grüße
Michael Wodrich

Apéndice:
Mir es sólo ahora aufgefallen, el Usted con gesetztem PASSWORD el Datenbankinhalte entschlüsselst en ellos entonces con gelöschtem otra vez por el Schlüsselfunktion a enviar.
Besser es si el Expediente unverschlüsselt entonces sin PWD$() speicherst y para el Verschlüsseln una propio Rutina schreibst. In el de Usted angegebenen Form trabajo beide Richtungen no.
 
Programmieren, das spannendste Detektivspiel der Welt.
27.07.2007  
 




Michael
Wodrich
AUTSCH

Der Fehler liegt bastante simplemente en el TRIM$()-Función. Sie lejos auch Steuerzeichen, el en el PWD-String aber vorkommen.

Es en el Ayuda en Trim$ eindeutig anders beschrieben !!!

Hier el Testcode:
KompilierenMarcaSeparación
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

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
27.07.2007  
 




Dirk
Kuntzmann
¡Hola Michael,

vielen Dank para deine respuesta rápida. An el Trim-Función Tuve no pensamiento. Bleibt el Cuestión si el así correcto y gewollt es oder si se hierbei en una pequeña Fehler es. Yo bin nämlich fest el Meinung, dass dieser Teil früher funktioniert ha.

Mit el Sicherheit el Passwörter hast du natürlich bastante, el son normalerweise auch länger, Yo ahora sólo kurze gewählt, en el problema a verdeutlichen. Z. B. abc schneidet el ersten Buchstaben beim Entschlüsseln de, während cba funktioniert. A0E96519 wiederum lässt se überhaupt no mehr entschlüsseln. Como el Passwörter aber de cada Computer anders zusammen gesetzt voluntad Yo no Einfluss darauf welcher Buchstabe oder welche Zahl wo en el Contraseña auftaucht.

Lo son somit vermutlich sólo zwei Möglichkeiten: 1. Yo warte en una trim-Función el nichts wegschneidet oder Yo versuche el Programa así a verändern, dass en allen Contraseña-Características el Trim-Función no genutzt y anders realisiert se. El erste Solución finde Yo aber deutlich angenehmer.

Saludo Dirk
 
27.07.2007  
 




Dieter
Zornow
Versuchs veces con el Api StrTrim, Yo denke el debería trabajo
KompilierenMarcaSeparación
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
¡Hola Dieter,

Vielen Dank, de Apis Yo desafortunadamente ni idea, aber el qué du como gezaubert ha schein super a trabajo. Bleibt el Cuestión, si el Profano propio trim-Función nun una Fehler ha oder si detrás de él una Sinn verbirgt.

Saludo Dirk
 
27.07.2007  
 




Dirk
Kuntzmann
P.S. Während uno el normale Trim-Función de el Geschwindigkeit her kaum wahrnimmt, Es el Api-Variant muy langsam (en sólo knapp 600 Datensätzen ha al Gefühl, dass el Rechner posición geblieben es).

Saludo Dirk
 
27.07.2007  
 




Jörg
Sellmeyer
Usted puede el Zona global deklarieren y dimensionieren. Dadurch se el Procedimiento wahrscheinlich algo más rápido:
KompilierenMarcaSeparación
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 benötigen en me 750ms

Zu testen encima
KompilierenMarcaSeparación
 {$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
KompilierenMarcaSeparación y debería imho auch klappen, porque Ihr braucht garnicht nochmals Speicher reservieren si Ihr doch ya genügend Speicher habt. (porque Trim se el String kaum vergrößern)  
 
27.07.2007  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.866 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie