Forum | | | | 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éparationdeclare 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 |
| | | | |
| | 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éparationdeclare 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 |
| | | | |
| | Dieter Zornow | Versuchs la fois avec qui Api StrTrim, je denke qui sollte marcher KompilierenMarqueSéparationDef 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 |
| | | | |
| | 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 |
| | | | |
| | Jörg Sellmeyer | tu peux den Bereich global déclarer et dimensionieren. Dadurch wird qui Procédure wahrscheinlich quelque chose plus rapide: KompilierenMarqueSéparation |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 27.07.2007 ▲ |
| |
| | | | | | | |
|
répondreOptions du sujet | 1.827 Views |
Themeninformationencet Thema hat 5 participant: |