ホームページ > バックエンド開発 > C++ > C# Rijndael 暗号化で「パディングが無効なので削除できません」という例外が発生するのはなぜですか?

C# Rijndael 暗号化で「パディングが無効なので削除できません」という例外が発生するのはなぜですか?

Linda Hamilton
リリース: 2025-01-08 22:18:57
オリジナル
763 人が閲覧しました

Why Am I Getting a

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 (最適非対称暗号化パディング) とも呼ばれます) は、暗号化されたデータの整合性を保証する、広くサポートされている安全なパディング アルゴリズムです。

その他の注意事項

  • 暗号化と復号に使用される鍵のサイズが同じであることを確認してください。
  • 初期化ベクトル (IV) が正しく処理されていることを確認してください。
  • 実装を簡素化するには、PKCS#7 パディングを使用した Rijndael 暗号化をサポートするライブラリまたはフレームワークを使用します。

以上がC# Rijndael 暗号化で「パディングが無効なので削除できません」という例外が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート