> 백엔드 개발 > C++ > Rijndael XML 암호 해독에서 '패딩이 잘못되어 제거할 수 없습니다' 예외를 수정하는 방법은 무엇입니까?

Rijndael XML 암호 해독에서 '패딩이 잘못되어 제거할 수 없습니다' 예외를 수정하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-08 22:26:43
원래의
743명이 탐색했습니다.

How to Fix

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 패딩을 적절하게 처리하려면 EncryptDecrypt 메서드를 기존 코드에 맞게 조정해야 합니다. 여기에는 일반적으로 암호화 및 암호 해독 기능의 입력 및 출력에 대한 해당 수정이 포함됩니다.

위 내용은 Rijndael XML 암호 해독에서 '패딩이 잘못되어 제거할 수 없습니다' 예외를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿