Maison > développement back-end > C++ > Comment corriger l'exception « Le remplissage n'est pas valide et ne peut pas être supprimé » dans le décryptage XML Rijndael ?

Comment corriger l'exception « Le remplissage n'est pas valide et ne peut pas être supprimé » dans le décryptage XML Rijndael ?

DDD
Libérer: 2025-01-08 22:26:43
original
687 Les gens l'ont consulté

How to Fix

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal