Transformer une chaine cryptée

Résolu
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010 - 15 janv. 2008 à 16:16
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010 - 16 janv. 2008 à 12:37
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
16 janv. 2008 à 10:19
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
15 janv. 2008 à 16:41
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
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
15 janv. 2008 à 17:23
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!@$ :-: >>>>
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
15 janv. 2008 à 17:27
bien vu, je te laisse jouer avec ce code comme base
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
16 janv. 2008 à 08:50
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!@$ :-: >>>>
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
16 janv. 2008 à 09:50
donc :
51 42 85 59 64 32 01
??
ce serait pas plutot
51 42 85 59 64 32 11
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
16 janv. 2008 à 09:55
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
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
16 janv. 2008 à 10:11
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!@$ :-: >>>>
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
16 janv. 2008 à 10:12
meme pas 15 24 58 95 46 23 01 je confirme :)

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
16 janv. 2008 à 12:37
Merci bcp Renfield :)

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