[VB] Caractères ASCII
florianverdonck
Messages postés
10
Statut
Membre
-
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
- Caracteres speciaux - Guide
- Caractères spéciaux mac - Guide
- Code ascii tabulation ✓ - Forum Programmation
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