Heim > Backend-Entwicklung > C++ > Wie behebt man die Ausnahme „Padding ist ungültig und kann nicht entfernt werden' in der Rijndael-XML-Entschlüsselung?

Wie behebt man die Ausnahme „Padding ist ungültig und kann nicht entfernt werden' in der Rijndael-XML-Entschlüsselung?

DDD
Freigeben: 2025-01-08 22:26:43
Original
683 Leute haben es durchsucht

How to Fix

Ungültige Auffüllausnahme bei der XmlDocument-Verschlüsselung

Wenn Sie den Rijndael-Algorithmus zum Entschlüsseln von XmlDocument verwenden, kann die Ausnahme „Padding ist ungültig und kann nicht entfernt werden“ auftreten. Dies bedeutet, dass der bei der Rijndael-Verschlüsselung verwendete Data Encryption Standard (DES) nicht mit dem beim Entschlüsseln angewendeten Padding kompatibel ist.

Um dieses Problem zu beheben, ist es wichtig sicherzustellen, dass sowohl Verschlüsselungs- als auch Entschlüsselungsvorgänge denselben Füllalgorithmus verwenden. Das Problem entsteht, weil Rijndael (auch bekannt als AES) eine Blockverschlüsselung ist, die in festen 128-Bit-Blöcken arbeitet.

Verschlüsselte Daten zum Auffüllen, um sicherzustellen, dass der letzte Block immer die richtigen Abmessungen hat. Sie können Probleme mit nicht übereinstimmenden Auffüllungen beheben, indem Sie die Auffüllung für die Verschlüsselung und Entschlüsselung explizit festlegen. Sofern keine besonderen Anforderungen für eine bestimmte Auffüllmethode bestehen, wird empfohlen, die branchenübliche PKCS#7-Auffüllung zu verwenden.

Hier ist eine modifizierte Version des Codes, bei der die Auffüllung explizit festgelegt wird:

<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>
Nach dem Login kopieren

Stellen Sie sicher, dass das using-Objekt korrekt freigegeben wird, indem Sie die RijndaelManaged-Anweisung verwenden, um Ressourcenlecks zu vermeiden. Beachten Sie, dass Sie die Methoden Encrypt und Decrypt an Ihren vorhandenen Code anpassen müssen, um das PKCS#7-Auffüllen ordnungsgemäß zu verarbeiten. Dabei werden in der Regel entsprechende Änderungen an den Ein- und Ausgängen der Ver- und Entschlüsselungsfunktionen vorgenommen.

Das obige ist der detaillierte Inhalt vonWie behebt man die Ausnahme „Padding ist ungültig und kann nicht entfernt werden' in der Rijndael-XML-Entschlüsselung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage