Transformer une chaine cryptée [Résolu]

Signaler
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010
-
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010
-
bonjour à tous

je suis confronté à un problème de chaine de caractères cryptée. Je vous explique un peu c'est simplement un insert de données en vb 6 de Excel vers Mysql. Je parcours mon fichier excel et j'insert à chaque fois, cependant ma variable NumeroSim est cryptée de cette facon :

a la base NumeroSim = "15278459612562"
seulement le cryptage est que tous les 2 caractères en partant de la gauche j'inverse les 2 chiffres et au dernier je rajoute 2
donc NumeroSim = "51724895165228"

Ma question est donc la suivante comment je peux coder cela ? car j'en ai strictement aucune idée..

_______________________
<<<< :-: 4L!@$ :-: >>>>

10 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Le msgbox au debut te sert juste à afficher le numéro de SIM que tu vas crypter, c'est inutile non ?

>> non, la chaine une fois cryptée.... (euh, tu as pas testé ?)

donc pour le +2 qui ne s'applique qu'au dernier chiffre :

Private Function Crypt(ByVal vsInString As String) As String
Dim xbChars() As Byte
Dim bSwap As Byte
Dim nLastIndex As Long
Dim i As Long
'# Si la taille de la chaine d'entrée est impaire, on ajoute un 0
If Len(vsInString) And 1 Then
vsInString = vsInString & "0"
End If
'# On place la chaine dans nu tableau d'octets.
'# Chaque case de ce dernier contient le code ascii de chacun des caractères
xbChars = StrConv(vsInString, vbFromUnicode)

nLastIndex = UBound(xbChars)

'# On parcoure le tableau, 2 cases par deux cases
For i = 0 To nLastIndex - 1 Step 2
'# Bête invertion de deux caractères consécutifs
bSwap = xbChars(i)
xbChars(i) = xbChars(i + 1)
If i = nLastIndex - 1 Then
'# Si le dernier caractère est un 8 ou un 9...
If bSwap >= 56 Then
'# On lui soustrait 8 (10-2)
bSwap = bSwap - 8
Else
'# Sinon, on lui ajoute 2
bSwap = bSwap + 2
End If
End If
xbChars(i + 1) = bSwap
Next i

'# On renvoie la chaine de caractères cryptée
Crypt = StrConv(xbChars, vbUnicode)
End Function
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Private Sub Form_Load()
MsgBox Crypt("15278459612562")
End Sub

Private Function Crypt(ByRef vsInString As String) As String
Dim xbChars() As Byte
Dim bSwap As Byte
Dim nLength As Long
Dim i As Long
xbChars = StrConv(vsInString, vbFromUnicode)
nLength = UBound(xbChars)
For i = 0 To nLength - 1 Step 2
bSwap = xbChars(i)
xbChars(i) = xbChars(i + 1)

If i = nLength - 1 Then
bSwap = bSwap + 2
End If
xbChars(i + 1) = bSwap
Next i

Crypt = StrConv(xbChars, vbUnicode)
End Function
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010

J'ai réfléchis à un truc ou je ne connais pas encore la réponse car mon supérieur est en réunion mais, il n'existe pas un autre moyen car on me parle de pattern ?
Pour ce qui est de la question c'est que :
Admettons, le num sim 15 24 58 95 46 23 99<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

Décrypter ca donne - 51 42 85 59 64 32 11

Ou                         - 51 42 85 59 64 33 11

_______________________
<<<< :-: 4L!@$ :-: >>>>
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
bien vu, je te laisse jouer avec ce code comme base
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010

Bon j'ai eu la réponse à mon problème apparement on ne pas avoir une Sim qui se termine par 99 mais uniquement 9 ce qui donnera par exemple :
15 24 58 95 46 23 9
donc :

51 42 85 59 64 32 01

Sinon pourrais-tu si ca te dérange pas de commenter ton code, car pour un dev comme toi ca parait tout simple, mais je n'ai que 3 mois d'expérience, et je m'interesse bien à ton code

Cordialement

_______________________
<<<< :-: 4L!@$ :-: >>>>
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
donc :
51 42 85 59 64 32 01
??
ce serait pas plutot
51 42 85 59 64 32 11
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Private Sub Form_Load()
MsgBox Crypt("15278459612562")
End Sub

Private Function Crypt(ByVal vsInString As String) As String
Dim xbChars() As Byte
Dim bSwap As Byte
Dim i As Long
'# Si la taille de la chaine d'entrée est impaire, on ajoute un 0
If Len(vsInString) And 1 Then
vsInString = vsInString & "0"
End If
'# On place la chaine dans nu tableau d'octets.
'# Chaque case de ce dernier contient le code ascii de chacun des caractères
xbChars = StrConv(vsInString, vbFromUnicode)

'# On parcoure le tableau, 2 cases par deux cases
For i = 0 To UBound(xbChars) - 1 Step 2
'# Bête invertion de deux caractères consécutifs
bSwap = xbChars(i)
xbChars(i) = xbChars(i + 1)
xbChars(i + 1) = bSwap
Next i

'# On renvoie la chaine de caractères à laquelle on ajoute 2
Crypt = Val(StrConv(xbChars, vbUnicode)) + 2
End Function
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010

15 24 58 95 46 23 9


donc :


51 42 85 59 64 32 01

??
ce serait pas plutot
51 42 85 59 64 32 11

non car en fait c'est comme si il avait un "0" imaginaire 15 24 58 95 46 23 90 c'est même15 24 58 95 46 23 03 ^^

Sinon merci beaucoup pour tes commentaires ! Ca fait plaisir :)
Le msgbox au debut te sert juste à afficher le numéro de SIM que tu vas crypter, c'est inutile non ?

_______________________
<<<< :-: 4L!@$ :-: >>>>
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010

meme pas 15 24 58 95 46 23 01 je confirme :)

_______________________
<<<< :-: 4L!@$ :-: >>>>
Messages postés
308
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
23 mars 2010

Merci bcp Renfield :)

_______________________
<<<< :-: 4L!@$ :-: >>>>