begin process at 2012 02 14 00:14:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Algorithme

 > 

Compression & Cryptage

 > 

Erreur lors de la fermeture d'un cryptostream


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur lors de la fermeture d'un cryptostream

dimanche 17 mai 2009 à 21:07:51 | Erreur lors de la fermeture d'un cryptostream

Vianneyp

Bonjour,
J'ai récupéré une source extrêmement bien commentée sur CodeProject : http://www.codeproject.com/KB/security/EncryptFile.aspx .
Le code sert donc à chiffrer des fichiers en utilisant Rijndael, comme vous pouvez le constater. J'y ai apporté diverses modifications comme l'ajout du nom de fichier (avec son extension) sur 256 octets pour restauration et le sha-512 du fichier (sur 64 octets) pour comparaison une fois le fichier déchiffré.
Mon problème c'est que, et déjà dans le source originale, si le fichier est déchiffré a l'aide d'une clé qui ne correspond pas a celle qui a servit au chiffrement, une exception est levée lors de la fermeture du cryptostream :


  'Close FileStreams and CryptoStream.

        csCryptoStream.Close()      ' Erreur si divergence entre les clés
        fsInput.Close()
        fsOutput.Close()

L'erreur renvoyée est : "Longueur des données à déchiffrer non valide." (N° 5)
L'auteur semble reposer sur cette erreur pour indiquer à l'utilisateur que le mot de passe n'est pas bon :

  Catch
            fsInput.Close()
            fsOutput.Close()

            If Direction = CryptoAction.ActionDecrypt Then
                Dim fileDelete As New FileInfo(txtDestinationDecrypt.Text)
                fileDelete.Delete()
                pbStatus.Value = 0
                txtPassDecrypt.Text = ""
                txtConPassDecrypt.Text = ""

                MsgBox("Please check to make sure that you entered the correct" + _
                        "password.", MsgBoxStyle.Exclamation, "Invalid Password")

Seulement je préfèrerai éviter cette erreur et me reposer sur la comparaison
des sha-512, qui me semble être une meilleur alternative. Savez-vous à quoi est due cette erreur ? Le fichier décrypté de devrai t-il pas être simplement différent ?
Sauriez-vous comment l'éviter ?


Merci d'avance pour votre aide.

jeudi 21 mai 2009 à 12:10:53 | Re : Erreur lors de la fermeture d'un cryptostream

Vianneyp

Réponse acceptée !

Après de longes recherches sur Internet, j'ai fini par trouver une réponse a mon "problème". L'erreur ne peut enfaite pas être évitée.
Je met tout de même les explications que j'ai trouvée si cela peut servir a quelqu'un.

C'est a cause du "padding" (remplissage) :
Rijndael est un algorithme de chiffrement par blocs. Cela signifie que la taille des données d'entrée doit être un multiple de la taille des blocs. Comme cela ne pas toujours être le cas, on utilise le padding pour remplir les données jusqu'à ce qu'elles fassent la même taille que le bloc. Pour "boucher les trous" quoi.

RijndaelManaged possède quatre types de padding :
=> PaddingMode.ANSIX923
=> PaddingMode.ISO10126
=> PaddingMode.PKCS7
=> PaddingMode.Zeros
On peut aussi choisir de ne pas en utiliser (ou de faire soit même le remplissage) :
=> PaddingMode.None

Le plus simple a comprendre est sans doute PaddingMode.Zeros : il ajoute comme son nom l'indique des zéros devant les données a chiffrer. Ces zéros serons ensuite supprimés une fois les données déchiffrés. Mais si les données ne sont pas déchiffrées avec le bonne clé, elles seront différentes et il sera impossible de retirer le padding car il ne trouvera pas les zéros à retirer devant les données. La même erreur peut aussi se produire si l'on utilise un padding différent lors du chiffrement et du déchiffrage.

D'ou l'erreur "Longueur des données à déchiffrer non valide." si 'l'on utilise aucun padding et l'erreur "Le remplissage n'est pas valide et ne peut pas être supprimé" si on utilise un padding et que l'on déchiffre le fichier avec une mauvaise clé.

Voila .



Cette discussion est classée dans : style, font, erreur, close, mso


Répondre à ce message

Sujets en rapport avec ce message

erreur d'execution [ par micro07 ] <link rel="Fi [BAR]Conception de calendriers (mise en garde) [ par VieuxClaude ] <link rel="Fi erreur avec visual studio 2008 [ par raphawel ] Bonjour,je viens chercher un peu d'aide!!!Je suis étudiant et j'ai pu bénéficier du logiciel visual studio 2008 gratuitement.Malheureusement , suite à merise+base de données d'une bibliothèque numérique+XML [ par mallsoul ] <link rel="Fi suprimer [ par naruto876 ] salutj'ai un problème dans  la formule suivant<meta name="Originator" Liaison entre open office Base et Autocad [ par Ancestroplaced ] Bonjour chers développeurs.Je sollicite votre aide car je cherche à créer une passerelle entre les logiciels Open Office Base et Autocad.J'utilise le Besoin de deux macros pour excel... je crois.... [ par Saratum ] Bonjour tous, Cela fait à peu près une semaine que je travail sur tout ça, et j'ai vraiment besoin d'aide... Je me suis fais un document excel qui exe Simuler un appui sur une boite de dialogue d'une autre appli. [ par breton51 ] <link rel="Fi Aide pour MACRO TABLE DE MULTIPLICATION [ par bencoco ] Bonjour, J'ai un soucis pour réussir à faire une macro VBA en utilisant Word : l'énoncé me demande faire une macro qui demande à l'utilisateur un nomb Problème lors de l'insertion d'une variable décimal dans la base de donnée [ par Flysteur ] Bonjour,<link rel="Fi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,888 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales