XmlDocument 암호화에서 잘못된 패딩 예외
Rijndael 알고리즘을 사용하여 XmlDocument를 해독할 때 "패딩이 잘못되어 제거할 수 없습니다."라는 예외가 발생할 수 있습니다. 이는 Rijndael 암호화에 사용되는 DES(데이터 암호화 표준)가 복호화 시 적용되는 패딩과 호환되지 않음을 의미합니다.
이 문제를 해결하려면 암호화 및 복호화 작업 모두 동일한 패딩 알고리즘을 사용하는지 확인하는 것이 중요합니다. 문제는 Rijndael(AES라고도 함)이 고정 128비트 블록에서 작동하는 블록 암호이기 때문에 발생합니다.
마지막 블록의 크기가 항상 올바른지 확인하기 위해 패딩용 데이터를 암호화합니다. 암호화 및 암호 해독을 위한 패딩을 명시적으로 설정하여 패딩 불일치 문제를 해결할 수 있습니다. 특정 패딩 방법에 대한 특별한 요구 사항이 없는 한 업계 표준 PKCS#7 패딩을 사용하는 것이 좋습니다.
다음은 패딩이 명시적으로 설정된 코드의 수정된 버전입니다.
<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>
리소스 누출을 방지하려면 using
문을 사용하여 RijndaelManaged
개체가 올바르게 해제되었는지 확인하세요. PKCS#7 패딩을 적절하게 처리하려면 Encrypt
및 Decrypt
메서드를 기존 코드에 맞게 조정해야 합니다. 여기에는 일반적으로 암호화 및 암호 해독 기능의 입력 및 출력에 대한 해당 수정이 포함됩니다.
위 내용은 Rijndael XML 암호 해독에서 '패딩이 잘못되어 제거할 수 없습니다' 예외를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!