C# Rijndael 암호화 및 복호화 프로그램에서 "패딩이 잘못되어 제거할 수 없습니다." 예외
암호화에서 Rijndael 알고리즘을 사용하여 암호화된 데이터를 해독하려고 하면 "패딩이 잘못되어 제거할 수 없습니다." 예외가 발생합니다. 이 예외는 암호화 중에 사용된 패딩이 암호 해독 알고리즘에서 예상하는 것과 일치하지 않음을 나타냅니다.
Rijndael의 패딩 이해
Rijndael(AES라고도 함)은 고정 크기의 데이터 블록에서 작동합니다. 암호화된 데이터의 크기가 블록 크기로 나누어지지 않는 경우 남은 공간을 채우는 데 패딩이 사용됩니다. 이 패딩은 암호문이 유효하고 완전한 블록임을 보장합니다.
복호화 과정
복호화 중에 알고리즘은 암호문에서 패딩을 제거하려고 시도합니다. 그러나 패딩이 예상한 것과 일치하지 않으면 "패딩이 잘못되어 제거할 수 없습니다." 예외가 발생합니다. 이는 암호화 및 암호 해독 알고리즘이 서로 다른 패딩 방식을 사용함을 의미합니다.
해결책: 패딩을 명시적으로 지정
이 문제를 해결하려면 암호화 및 복호화를 위한 패딩 방식을 명시적으로 지정해야 합니다. 이는 다음 코드를 사용하여 수행할 수 있습니다:
<code class="language-csharp">// 加密 symmetricAlgorithm.Padding = PaddingMode.PKCS7; // 解密 EncryptedXml exml = new EncryptedXml(); exml.Padding = PaddingMode.PKCS7;</code>
PKCS#7 패딩
다른 패딩 구성표를 사용해야 하는 특별한 이유가 없는 한 PKCS#7 패딩을 사용하는 것이 좋습니다. PKCS#7(OAEP(Optimal Asymmetric Encryption Padding)이라고도 함)은 암호화된 데이터의 무결성을 보장하는 널리 지원되는 보안 패딩 알고리즘입니다.
기타 참고사항
위 내용은 C# Rijndael 암호화에서 '패딩이 잘못되어 제거할 수 없습니다.' 예외가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!