Anomalie de cryptage/décryptage DES

bernardPare Messages postés 3 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 10 mars 2012 - 10 mars 2012 à 11:39
 Utilisateur anonyme - 10 mars 2012 à 19:19
Bonjour,
Je veux crypter et décrypter des fichier texte.
A cette fin j'utilise l'algorithme DES.

J'ai un problème avec les caractères accentués et certains caractères spéciaux qui ne sont pas restitués correctement! pour le reste tout est OK!

Quelqu'un peut-il m'aider?

Public Function EncryptFile_DES(ByVal sInputFilename As String, ByVal sOutputFilename As String, ByVal sKey As String, ByVal sIV As String) As Boolean
EncryptFile_DES = True
On Error GoTo Erreur_Encrypt
Dim fsInput As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
Dim fsOutput As New FileStream(sOutputFilename, FileMode.Create, FileAccess.Write)
Dim DES As New DESCryptoServiceProvider()

'Une clé de 64 bits et un vecteur d'initialisation sont requis pour ce fournisseur.
'Définit la clé secrète pour l'algorithme DES.
DES.Key = ASCIIEncoding.ASCII.GetBytes(Left(sKey, 8))
'Définit le vecteur d'initialisation.
DES.IV = ASCIIEncoding.ASCII.GetBytes(Left(sIV, 8))

'crée un crypteur DES à partir de cette instance
'Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()
'Dim cryptostream As New CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write)
Dim cryptostream As New CryptoStream(fsoutput, DES.CreateEncryptor(DES.Key, DES.IV), CryptoStreamMode.Write)
fsOutput.SetLength(0)

Dim bytearrayinput(fsInput.Length - 1) As Byte
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)

cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)

fsInput.Close()
cryptostream.Close()
fsOutput.Close()
Exit Function
Erreur_Encrypt:
MsgBox(sInputFilename & " : " & "Erreur de cryptage" & vbCrLf & Enreg & vbCrLf & Err.Description, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, Mess_Txts(89))
fsInput.Close()
cryptostream.Close()
fsoutput.Close()
EncryptFile_DES = False

End Function
Public Function DecryptFile_Des(ByVal sInputFilename As String, ByVal sOutputFilename As String, ByVal sKey As String, ByVal sIV As String) As Boolean
DecryptFile_Des = True
On Error GoTo Erreur_Decrypt
Dim DES As New DESCryptoServiceProvider()
Dim Textdecrypt As String

'Une clé de 64 bits et un vecteur d'initialisation sont requis pour ce fournisseur.
'Définit la clé secrète pour l'algorithme DES.
DES.Key = ASCIIEncoding.ASCII.GetBytes(Left(sKey, 8))
'Définit le vecteur d'initialisation.
DES.IV = ASCIIEncoding.ASCII.GetBytes(Left(sIV, 8))

'crée un flux de fichier pour lire le fichier crypté de retour
Dim fsInput As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
'Dim fsread As FileStream = File.Open(sInputFilename, FileMode.OpenOrCreate)


'crée un décrypteur DES à partir de l'instance DES
'Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()
'crée un flux de cryptage, défini pour lire et effectuer une transformation de décryptage DES sur les octets entrants
'Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
Dim cryptostream As New CryptoStream(fsInput, DES.CreateDecryptor(DES.Key, DES.IV), CryptoStreamMode.Read)
'imprime le contenu du fichier décrypté
Dim fsOutput As New StreamWriter(sOutputFilename)
'Dim fsOutput As New FileStream(sOutputFilename, FileMode.Create, FileAccess.Write)

Textdecrypt = New StreamReader(cryptostream).ReadToEnd.TrimEnd()
fsOutput.Write(Textdecrypt)

fsOutput.Flush()
fsOutput.Close()
fsInput.Close()
cryptostream.Close()
Exit Function
Erreur_Decrypt:
MsgBox(sInputFilename & " : " & "Erreur de décryptage" & & vbCrLf & Err.Description, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, Mess_Txts(89))
fsOutput.Close()
fsInput.Close()
cryptostream.Close()
DecryptFile_Des = False
End Function

10 réponses

Utilisateur anonyme
10 mars 2012 à 13:22
Bonjour,

As-tu essayé de remplacer les caractères par chr(codeascii)?

Par exemple pour un "é" le code est 130, ce qui ferait:
texte = replace(texte, "é", chr(130))


La table ascii: http://www.asciitable.com/

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 mars 2012 à 13:29
Bonjour,

'est du VB6 (présente catégorie) ou du VB.NET (ce que semble indiquer ton code) ?

ASCIIEncoding.ASCII.GetBytes(Left(sIV, 8))
Car en .NET, il est préférable d'éviter d'utiliser les fonction de compatibilité VB6, retires donc l'import automatique de l'espace de nom Microsoft.VisualBasic (propriétés du projet, onglet Références) et mets aussi Option Explicit et Option Strict à On (Propriétés du projet).

Quand tu postes un code, lis le point 2 de ma signature.

Essayes plutôt d'utiliser l’encodage UTF8 plutôt que ASCII (ce dernier se limite aux 128 premiers caractères de la table).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
bernardPare Messages postés 3 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 10 mars 2012
10 mars 2012 à 15:58
Le programme est écrit en VB (VB Express 2010)
Tous les lettres accentuées et certains caractères spéciaux tels que "µ, ?" semblent être remplacée par la même chose car lorsque je fais un remplacement tous ces caractères sont changés de la même manière.

Nota Si j'analyse le fichier décode avec Notepad+ et demande l'affichage en ANSI j'obtiens "ï¿œ"
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 mars 2012 à 16:05
Bonjour,

Utilises l'encoding UTF8 ou alors la page de code qu'il te convient.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0

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

Posez votre question
Utilisateur anonyme
10 mars 2012 à 16:39
Dans [guadeloupe.camoes.com/Cryptage.zip CE LIEN] tu trouveras un exemple (en VB6, la présente section) très simple pour crypter du texte ou un fichier texte.
Algorithme perso, enregistrement, ouverture cryptage/décryptage tout type de caractères etc.

Vu que tu es en .Net (VB Express 2010) ça n'a plus rien à voir du tout !...
Dont l'intérêt de l'importance du choix de la section où tu postes.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 mars 2012 à 16:59
Bonjour,

J'ai déplacé le sujet (j'avais oublié de le faire), prends en note, pour tes prochains sujets.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Utilisateur anonyme
10 mars 2012 à 17:09
Merci NHenry,

J'essaye de "décrypter" tout ça en .NET maintenant.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
10 mars 2012 à 18:39
Voilà la même chose mais en .NET [guadeloupe.camoes.com/Cryptage.net.zip DANS CE LIEN]

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 mars 2012 à 19:15
Bonjour,

Lien erroné :
http://www.vbfrance.com/forum/guadeloupe.camoes.com/Cryptage.net.zip
Alors que l'URL est :
http://guadeloupe.camoes.com/Cryptage.net.zip

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Utilisateur anonyme
10 mars 2012 à 19:19
Oui....
Pourquoi ça m'arrive à moi?...
LIEN

Merci Henry, on voit qui est présent !...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous