c_charly
Messages postés21Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 8 septembre 2005
-
8 sept. 2005 à 12:32
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
8 sept. 2005 à 12:58
Bonjout tout le monde,
j'aimerai savoir s'il existe dans VB une fonction qui permet de crypter une chaine ...
car ca me permettrai de pas créer une fonction dédiée a cela.
Par la meme occasion, si elle existe : quelle est la fonction de décryptage
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 8 sept. 2005 à 12:43
Violent Ken
Salut.
Non, il n'existe pas de fonction déjà faite dans VB. Tu doit donc la créer.
Tappes "cryptage" dans le moteur de recherche du site, et tu trouveras plein de sources pour te donner des idées. Il y a aussi un tuto. super bien fait de Proger, jette un coup d'oeil.
@+
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 sept. 2005 à 12:58
salut,
tout dépend de ce que tu veux.
si c'est juste pour "masquer" un mot de passe dans un fichier texte, pour ne pas pouvoir le lire à l'oeil nu, tu peux le "coder" plutôt que le cryper.
dans çà cas, tu peux utiliser les calculs VB.
par contre, si c'est vraiment du cryptage, il faut soit faire ton propre algo, soit directement utiliser des cryptages existants (MD5 pour le plus connu, souces disponible sur ce site)
voici un petit "codage" très basique qui converti chaque caractère en son triple de valeur ascii, séparés par des points.
(bien utile pour MDP en fichier ini, rapide, mais décryptable sans aucun problème)
'#####################
'## dans une Form ##
'#####################
Private Sub Command1_Click()
'encode "BONJOUR"
Dim Encode As String
Encode = TranslatePass(LettersToNumbers, "BONJOUR")
Debug.Print "BONJOUR = " & Encode
MsgBox Encode
End Sub
Private Sub Command2_Click()
'décode "334.353.318.100.698.678.103.314.342.340.308.360.328.347.345.346.320"
Dim Decode As String
Decode = TranslatePass(NumbersToLetters, , "334.353.318.100.698.678.103.314.342.340.308.360.328.347.345.346.320")
Debug.Print "334.353.318.100.698.678.103.314.342.340.308.360.328.347.345.346.320 = " & Decode
MsgBox Decode
End Sub
'######################
'## dans un Module ##
'######################
'types
Public Enum TransPassConst
LettersToNumbers
NumbersToLetters
End Enum
'retourne le Mot De Passe en Chiffres ou en Lettres (pas crypté, juste pas lisible à l'oeil nu)Public Function TranslatePass(How As TransPassConst, Optional Letters As String "NONE", Optional Numbers As String "NONE") As String If (Letters "NONE") And (Numbers "NONE")) Then GoTo ERRORTRANS
Dim Carac() As String, i As Integer
TranslatePass = ""
On Error GoTo ERRORTRANS
If How = LettersToNumbers Then 'on converti les lettres en chiffres
For i = 0 To Len (Letters) - 1
TranslatePass = TranslatePass & (Asc(Mid(Letters, i + 1, 1)) * 3 + i + 1) & "."
Next i
TranslatePass = Left (TranslatePass, (Len(TranslatePass) - 1))
Else 'on converti les chiffres en lettres
Carac = Split(Numbers, ".")
TranslatePass = ""
For i = 0 To UBound (Carac)
TranslatePass = TranslatePass & Chr(Carac(i) - i - 1) / 3)
Next i
End If
Exit Function