J'ai l'impression que tu te mélanges un peu les pinceaux... donc je résume ce qu'il faut faire :
Chiffrement :
plainText -> (UTF8.GetBytes) -> plainBytes
-> (chiffrement) -> cypherBytes
-> (ToBase64) -> cipherText
Déchiffrement :
cipherText -> (FromBase64) -> cipherBytes
-> (déchiffrement) -> plainBytes
-> (UTF8.GetString) -> plainText
(comme tu as fait avec un StreamReader, ça devrait marcher aussi)
Du coup il se pourrait que cette méthode ne fasse pas une conversion fidèle des données?
Toutes ces méthodes font une conversion fidèle des données, mais elles travaillent chacune sur un certain type de données, et si tu passes des données qui ne sont pas celles qui sont attendues, tu vas forcément obtenir n'importe quoi. Par exemple appeler UTF8.GetString sur des données binaires chiffrées n'a pas de sens, puisque ces données ne représentent pas du texte en UTF8. De même, appeler UTF8.GetBytes sur une chaine base64 va te donner quelque chose, mais qui ne correspond pas aux données binaires représentées par la chaine base64...
Après, il se peut qu'il y ait d'autres erreurs dans l'utilisation des classes de cryptographie... là dessus je ne peux pas vraiment t'aider, je ne suis pas du tout expert dans ce domaine. La méthode de chiffrement me semble correcte à première vue, mais chez moi elle pète une erreur ("The input data is not a complete block")
Au fait, pourquoi tous ces blocs catch avec juste un throw ? Si c'est pour mettre des breakpoints, il y a un moyen plus simple... Menu Debug -> Exceptions, et cocher la checkbox correspondant aux exceptions CLR. Le debugger s'arrêtera automatiquement quand une exception se produit
Partager