Eh, en juillet, le we commence dès le vendredi midi. Tu postes à 11:21, à l'heure de l'apéro, qu'est-ce que tu espères ?
En fait, tu cherches à crypter puis à décrypter un mot de passe dans tes programmes.
Voilà un sujet intéressant.
En fait, je ne connais pas de "logiciel" pour faire ça, par contre, écrire une fonction pour crypter est assez facile. Reste à savoir si il est impératif de décrypter.
Vue ta question, je suis sûr que tu trouves particulièrement saugrenue l'idée de ne pas avoir à décrypter. Et pourtant, c'est comme cela qu'on fait. Regarde :
A la demande de création du mot de passe, on le crypte aussitôt avec la fonction de cryptage et on stocke la version cryptée.
A la demande d'utilisation du mot de passe, on le crypte aussitôt, on récupère la version cryptée et on compare les deux. Si c'est identique, le mot de passe est bon.
Donc maintenant que ce principe est bien compris, j'espère que tu peux l'appliquer à ton cas.
Il faut maintenant se trouver une fonction de cryptage. Alors, avec ou sans fonction inverse ?
S'il te faut une fonction inverse (décryptage), regarde du côté des fonctions de chiffrements.
Sinon, c'est du côté des fonctions de hachage.
Quelques fonctions de chiffrement simples symétriques à clef secrète :
Le chiffre de Cesar
http://fr.wikipedia.org/wiki/Chiffre_de_C%C3%A9sar
Très facile à coder en VB, je te laisse le soin de le faire.
La clef est le décalage, ROT13 n'est que le trop simple code de César avec 13 comme clef (L'alphabet romain ne contenant que 20 lettres, cette clef à 26/2=13 ne peut être romaine)
Chiffrement à phrase secrète
Il nous faut pour ce cas une fonction bijective E, dont la réciproque E' est connue, et une clef.
Soit la phrase "tes@idn est un petit cachotier". Elle servira de clef k.
Soit la fonction Ou-exclusif, elle servira de fonction E. La réciproque est connue, c'est elle-même, E=E'.
En VB :
Sub TestChiffrement()
Dim K As String
Dim M As String
Dim C As String
Dim D As String
K = "teseatidnestunpetitcachotier"
M = "essai"
MsgBox "Message: " & M
C = ""
For i = 1 To Len(M)
C = C & Chr(Asc(Mid(K, i, 1)) Xor Asc(Mid(M, i, 1)))
Next
MsgBox "Chiffré: " & C
D = ""
For i = 1 To Len(C)
D = D & Chr(Asc(Mid(K, i, 1)) Xor Asc(Mid(C, i, 1)))
Next
MsgBox "Déchiffré: " & D
End Function
Facile, non ?
Alors voici les deux fonctions utiles :
Function Chiffrement(Message As String, Clef As String) As String
Dim i As Integer
Dim C As String
For i = 1 To Len(Message)
C = C & Chr(Asc(Mid(Clef, i Mod (Len(Message) + 1), 1)) Xor Asc(Mid(Message, i, 1)))
Next
Chiffrement = C
End Function
Function Dechiffrement(MsgCode As String, Clef As String) As String
Dechiffrement = Chiffrement(MsgCode, Clef)
End Function
J'ai remplacé i par i Mod (Len(Message) + 1). Devine pourquoi.
Pour ce qui est des fonctions de hachage, je t'invite à te renseigner sur md5 (facile) ou sur sha-1 (difficile).