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.