Et voilà un prototype : (J'ai repris un code sur code archive : Grand merci à l'auteur.)
Code : Tout sélectionner
Procedure.s Crypter(String$, Action.b)
If Action = 0 ; On code la chaine
von.w = 97
zu.w = 127
For a = 0 To 25
If a = 18 ; schließe diese beiden Zeichen aus (´=145) (´=146) (s t)
a = a + 2 ; siehe Tools `ASCII Table´
EndIf
von$ = Chr(von.w + a)
zu$ = Chr(zu.w + a)
String$ = ReplaceString(String$, von$, zu$)
Next a
ProcedureReturn String$
ElseIf Action = 1 ; On décode la chaine
von.w = 127
zu.w = 97
For a = 0 To 25
If a = 18
a = a + 2
EndIf
von$ = Chr(von.w + a)
zu$ = Chr(zu.w + a)
String$ = ReplaceString(String$, von$, zu$)
Next a
ProcedureReturn String$
EndIf
EndProcedure
; •/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/
; Le code qui suit doit être mis en commentaire pour créer le programme final
; Il sert juste à générer la clef
; •/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/
;
; Dim Utilisateur.s(1)
;
; Utilisateur(0)= "Heero ? Mot de passe"
; Utilisateur(1)= "User2 ? Allo"
;
; ; Si le fichier Français n'existe pas créer le fichier français
; If FileSize("Clef.txt") = -1
; OpenFile(0, "Clef.txt")
; For texte = 0 To 1
; WriteStringN(Crypter(Utilisateur(texte),0))
; Next
; CloseFile(0)
; EndIf
; •/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/•/
Procedure Password(Nomfichier$)
Enumeration
#PasswordWindow
#Texte_Utilisateur
#ComboBox_Utilisateur
#Texte_Mot_de_passe
#Mot_de_passe_entree
#Btn_OK
#Btn_Cancel
#Fichier_clef
EndEnumeration
#Nb_max_user = 10
Dim ListeUser.s(#Nb_max_user)
; Chargement des textes pour le programme
If OpenFile(#Fichier_clef, Nomfichier$)
Repeat
texte$ = ReadString()
If Left(texte$, 1) <> ";" ; On traite les lignes de commentaire
If texte$ <> "" ; On traite les lignes vide
ListeUser(n) = Crypter(texte$, 1)
; Debug ListeUser(n)
EndIf
EndIf
n + 1
Until Eof(#Fichier_clef)
CloseFile(#Fichier_clef)
EndIf
If OpenWindow(#PasswordWindow, 0, 0, 325, 150, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Mot de Passe")
If CreateGadgetList(WindowID(#PasswordWindow))
TextGadget(#Texte_Utilisateur, 0, 10, WindowWidth(), 20, "Veuillez choisir votre nom d'utilisateur", #PB_Text_Center)
ComboBoxGadget(#ComboBox_Utilisateur, 40, 30, 245, 100)
TextGadget(#Texte_Mot_de_passe, 0, 65, WindowWidth(), 20, "Veuillez inserer votre Mot de Passe", #PB_Text_Center)
StringGadget(#Mot_de_passe_entree, 40, 85, 245, 20, "", #PB_String_Password)
ButtonGadget(#Btn_OK, 30, 120, 60, 22, "OK")
ButtonGadget(#Btn_Cancel, 235, 120, 60, 22, "Annuler")
EndIf
AddKeyboardShortcut(#PasswordWindow, #PB_Shortcut_return, #Btn_OK) ; sert a ce que l'on puisse appuyer sur entrer pour valider le code
EndIf
; Ici on met en place la liste des utilisateurs
For userno = 0 To n
AddGadgetItem(#ComboBox_Utilisateur, -1, RTrim(LTrim(StringField(ListeUser(userno), 1, "?"))) )
Next
SetGadgetState(#ComboBox_Utilisateur, 0) ; pour que dès l'ouverture du programme le premier nom de la liste soit affiché dans la combobox.
ActivateGadget(#Mot_de_passe_entree) ; pour que dès l'ouverture du programme vous puissiez ecrire sans devoir cliquer sur le stringGadget
Repeat
Event = WaitWindowEvent()
Select EventGadgetID()
Case #Btn_OK
Username$ = GetGadgetText(#ComboBox_Utilisateur)
Password$ = GetGadgetText(#Mot_de_passe_entree)
; Ici on reconstruit la chaine comme dans la clef
User$ = Username$ + " ? " + Password$
For x = 0 To n
trouver = FindString(ListeUser(x), User$, 1)
If trouver = 1
Break
EndIf
Next
If trouver = 1
MessageRequester("Bienvenu", "Bonjour à toi " + Username$ + ".")
user = #True
Event = #PB_EventCloseWindow
Else
If essai < 2 ; Essai est la variable de contôle du nombre de fois qui est permit de se tromper
MessageRequester("Erreur !!", "Veuiller sélectionner le bon nom d'utilisateur" + Chr(10) + "ou entrer votre mot de passe à nouveau.")
SetGadgetText(#Mot_de_passe_entree, "")
ActivateGadget(#Mot_de_passe_entree)
essai + 1
Else
user = #False
Event = #PB_EventCloseWindow
EndIf
EndIf
Case #Btn_Cancel
user = #False
Event = #PB_EventCloseWindow
EndSelect
Until Event = #PB_EventCloseWindow
; On ferme la Fenètre de demande de mot de passe
CloseWindow(#PasswordWindow)
ProcedureReturn user
EndProcedure
; *************************************************************************************
; *************************************************************************************
; *************************************************************************************
utilisateurautorise = Password("Clef.txt")
If utilisateurautorise = #False
End
Else
If OpenWindow(0, 0, 0, 322, 150, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "EditorGadget")
If CreateGadgetList(WindowID(0))
EditorGadget (0, 8, 8, 306, 133, #PB_Container_Raised)
For a = 0 To 5
AddGadgetItem(0, a, "Line " + Str(a))
Next
EndIf
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
La clef n'est pas crypter mais coder elle peut être décoder mais pour une protection légère ça peut faire l'affaire.