[VB] Caractères ASCII

florianverdonck Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

J'essaye actuellement de faire un logiciel de cryptage en VisualBasic.
Mon logiciel consiste en un décallage des lettre en ASCII.
Je sais pour le moment ce n'est pas très clair, voilà mon code pour vous éclairer :)

Fonction de cryptage :

 Dim n As Integer, i As Integer, a As Integer
  Dim s1 As String, s2 As String, c as String
  
  TextField2.Text = ""
  s1 = TextField1.Text ' affecter à s1 le contenu de text1
  n = Len(s1) ' longueur du texte à coder
  
  For i = 1 To n ' boucle sur chaque caractère du texte
    c= Mid(s1,i,1) ' c est le ième caractère du texte
    a = Asc(c) + 1 ' a est le code ascii de t incrémenté de 1
    If a = 33 Then a = 32 ' si c'est un espace on conserve sa valeur (le code de l'espace est 32)
    s2 = s2 + Chr(a) ' on recompose la chaine avec les codes modifiés
  Next
  TextField2.Text = s2 ' on ecrit le resultat dans text2





Fonction de décryptage :

  Dim n As Integer, i As Integer, a As Integer
  Dim s1 As String, s2 As String, c as String
  
  s2 = TextField2.Text ' affecter à s1 le contenu de text1
  n = Len(s2) ' longueur du texte à coder
  For i = 1 To n ' boucle sur chaque caractère du texte
    c= Mid(s2,i,1) ' c est le ième caractère du texte
    a = Asc(c) - 1 ' a est le code ascii de t incrémenté de 1
    If a = 32 Then a = 32 ' si c'est un espace on conserve sa valeur (le code de l'espace est 32)
    s1 = s1 + Chr(a) ' on recompose la chaine avec les codes modifiés
  Next
  TextField1.Text = s1 ' on ecrit le resultat dans text2




Mon problème, c'est que quand on crypte un "à", un "é" ou certaines autres lettres et qu'on le décrypte, on ne tombe plus sur la même chose !

Je ne sais vraiment pas si c'est clair :S
A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,
J'ai teste vos fonction en VBA execl. Avec les lettre accentuees ou autres cela donne le bon resultat en decodage.

Bonne suite
0
Utilisateur anonyme
 
Bonjour,

J'ai eu ce genre de problème avec un logiciel propriétaire.

Quelque part dans la config un fichier de langue est mal
identifié. Si comme moi tu es confronté à lire un fichier
de type xml, ou même des données, une lettre accentué
prendra 2 caractères.

Le framework possède maintenant un objet Culture.Info

Suggestion,

crypte ton fichier avec la valeur hexa de l'octet, au lieu de
l'instruction Asc(var), utilise Hex(var) et travail sur le mot
binaire ainsi obtenu, il y a plein de codage possible,
décalage a droite, decalage à gauche, complément à un, etc ...
réécrit chaque octet, encode les sur deux octets de façon
binaire ou relie ton fichier en testant


c= Mid(s2,i,1)
a = Asc(c)
b = Asc(Mid(s2,(i+1),1)

If (a & b ) = "é" Alors ...
ElseIf ( a & b ) = "è" Alors ...
ElseIf ( a & b ) = "î" Alors

En fait créer une constantes

Const cteLettreAcc("éêèàâî.
Const cteLettreNon("eeeaai")

if (Substr(1,cteLettreAcc,( a & b ) ,vbTextCompare) ­> 0 ) Then

Cdt

Lupin
0