[VB] Caractères ASCII
florianverdonck
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
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 :
Fonction de décryptage :
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
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:
- [VB] Caractères ASCII
- Code ascii - Guide
- Caractères spéciaux - Guide
- Vb - Télécharger - Langages
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
2 réponses
Bonjour,
J'ai teste vos fonction en VBA execl. Avec les lettre accentuees ou autres cela donne le bon resultat en decodage.
Bonne suite
J'ai teste vos fonction en VBA execl. Avec les lettre accentuees ou autres cela donne le bon resultat en decodage.
Bonne suite
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
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