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 (最適非対称暗号化パディング) とも呼ばれます) は、暗号化されたデータの整合性を保証する、広くサポートされている安全なパディング アルゴリズムです。
その他の注意事項
以上がC# Rijndael 暗号化で「パディングが無効なので削除できません」という例外が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。