Exception de remplissage non valide dans le cryptage XmlDocument
Lorsque vous utilisez l'algorithme de Rijndael pour décrypter XmlDocument, vous pouvez rencontrer l'exception « Le remplissage n'est pas valide et ne peut pas être supprimé ». Cela signifie que le Data Encryption Standard (DES) utilisé dans le chiffrement Rijndael est incompatible avec le remplissage appliqué lors du déchiffrement.
Pour résoudre ce problème, il est important de s'assurer que les opérations de chiffrement et de déchiffrement utilisent le même algorithme de remplissage. Le problème se pose car Rijndael (alias AES) est un chiffrement par blocs qui fonctionne par blocs fixes de 128 bits.
Données cryptées pour le remplissage afin de garantir que le dernier bloc a toujours les dimensions correctes. Vous pouvez résoudre les problèmes de non-concordance de remplissage en définissant explicitement le remplissage pour le chiffrement et le déchiffrement. Sauf s'il existe des exigences particulières pour une méthode de remplissage spécifique, il est recommandé d'utiliser le remplissage standard PKCS#7 de l'industrie.
Voici une version modifiée du code où le remplissage est défini explicitement :
<code class="language-csharp">public void Cryptography(XmlDocument doc, bool cryptographyMode) { using (RijndaelManaged key = new RijndaelManaged()) { key.Padding = PaddingMode.PKCS7; // 显式设置 AES 128 填充模式 // ... 您的现有代码(需要进行必要的调整以设置填充)... if (cryptographyMode) { Encrypt(doc, "Content", key); } else { Decrypt(doc, key); } } // ... }</code>
Assurez-vous que l'objet using
est libéré correctement en utilisant l'instruction RijndaelManaged
pour éviter les fuites de ressources. Notez que vous devrez adapter les méthodes Encrypt
et Decrypt
à votre code existant pour gérer correctement le remplissage PKCS#7. Cela implique généralement d'apporter les modifications correspondantes aux entrées et sorties des fonctions de chiffrement et de déchiffrement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!