Mein Ver/Entschlüsseln - Eure Meinung
Verfasst: 25.06.2017 02:46
Hallo Leute.
Bitte nicht schimpfen oder lästern.
Ich bastle mir einen eigenen Passworttresor.
Ich weiß, entsprechende Prgs gibt es inzwischen viele.
Trotzdem interessiert mich Eure Meinung zu meinem Prg.
Wo sind die Fehler? Die Schwachstellen??
A. Das Masterpasswort muß man später direkt eingeben.
Es ist nirgendwo im Prg vermerkt.
Das Passwort darf eine variable Länge haben.
B. Aus dem Passwort wird ein Schlüssel generiert.
Wie sicher ist dieser Schlüssel? Was sagt Ihr dazu?
C. Aus der Kombination des Passworts und dem Schlüssel werden dann die weiteren Texte, Passworte, Ver/Entschlüsselt.
Auch hierzu bitte ich Euch um Eure Meinung.
Ich danke Euch schon mal für Eure Mühe.
Hier also mein Muster- Prg. (Muster weil, es wird später in einem größeren Prg verbaut).
Bitte nicht schimpfen oder lästern.
Ich bastle mir einen eigenen Passworttresor.
Ich weiß, entsprechende Prgs gibt es inzwischen viele.
Trotzdem interessiert mich Eure Meinung zu meinem Prg.
Wo sind die Fehler? Die Schwachstellen??
A. Das Masterpasswort muß man später direkt eingeben.
Es ist nirgendwo im Prg vermerkt.
Das Passwort darf eine variable Länge haben.
B. Aus dem Passwort wird ein Schlüssel generiert.
Wie sicher ist dieser Schlüssel? Was sagt Ihr dazu?
C. Aus der Kombination des Passworts und dem Schlüssel werden dann die weiteren Texte, Passworte, Ver/Entschlüsselt.
Auch hierzu bitte ich Euch um Eure Meinung.
Ich danke Euch schon mal für Eure Mühe.
Hier also mein Muster- Prg. (Muster weil, es wird später in einem größeren Prg verbaut).
Code: Alles auswählen
Procedure.s Get_Passwort()
;passwort$ = InputRequester("Passwort", "Passwort Eingeben !", "", #PB_InputRequester_Password)
passwort$ = "Passwort" ; So ists richtig
;passwort$ = "Password" ; Das ist falsch
ProcedureReturn passwort$
EndProcedure
Procedure.d Create_Schluessel(passwort$)
schluessel.d = 1
For i = 1 To Len(passwort$)
b = Asc(Mid(passwort$, i, 1))
If b % 2
schluessel = schluessel * b
Else
schluessel = schluessel / b
EndIf
Next
schluessel = schluessel / Len(passwort$)
; Nachkommastellen abschneiden
a$ = StrD(schluessel)
schluessel = Val(StringField(a$, 1, "."))
ProcedureReturn schluessel
EndProcedure
Procedure.s Verschluesseln(passwort$, schluessel.d, text$)
c$ = ""
j = 1
For i = 1 To Len(text$)
b.d = Asc(Mid(passwort$, j, 1)) * schluessel
a.d = Asc(Mid(text$, i, 1)) * b
c$ + StrD(a, 0) + ","
j + 1 : If j > Len(passwort$) : j = 1 : EndIf
Next
ProcedureReturn c$
EndProcedure
Procedure.s Entschluesseln(passwort$, schluessel.d, c$)
text$ = ""
j = 1
For i = 1 To CountString(c$, ",")
a = Val(StringField(c$,i,","))
b = Asc(Mid(passwort$, j, 1))
a = a / (b * schluessel)
text$ + Chr(a)
j + 1 : If j > Len(passwort$) : j = 1 : EndIf
Next
ProcedureReturn text$
EndProcedure
; ---
passwort$ = Get_Passwort()
Debug passwort$
schluessel.d = Create_Schluessel(passwort$)
Debug schluessel
text$ = "aVerschlüsselter Text"
testcode$ = "15535520,16700684,23253230,26246220,27397370,21999978,23735712,25081056,40360320,22332310,26476450,23253230,25729704,25777752,23051028,26474448,5125120,16312296,23253230,27627600,27635608,"
c$ = Verschluesseln(passwort$, schluessel, text$)
Debug c$
text$ = Entschluesseln(passwort$, schluessel, c$)
Debug text$
text$ = Entschluesseln(passwort$, schluessel, testcode$)
Debug testcode$
If text$ = "aVerschlüsselter Text"
Debug "Passwort OK"
Else
Debug "Passwort Falsch"
EndIf