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>
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!