2

ファイルとデータベースの両方に暗号化された状態でいくつかの情報を保存するアプリケーションがあります。プレーンテキスト入力に基づいて、結果の暗号文の長さを計算するにはどうすればよいですか?

暗号化操作は、.NET RijndaelManagedクラス/アルゴリズムを使用してから、保存前にBase64文字列に変換することで構成されます。

私ができるようにしたいのは、暗号化された文字列が特定の入力に対してどのくらいの長さになるかを事前に知って、暗号化された形式で使用可能なストレージスペースに応じて入力の長さを制限できるようにすることです(それが理にかなっている場合) !)。

ありがとう

4

2 に答える 2

6

Rijndaelの出力は入力と同じサイズで、ブロックサイズの次に近い倍数(通常は128ビット、別名16バイト)に切り上げられます。Base64は、入力を4/3だけ出力に拡張します。つまり、3バイトの入力ごとに4バイトの出力が必要です。

したがって、たとえば70バイトの入力がある場合、暗号化ステップは80バイトの出力(70を超える16の最も近い倍数)を生成し、Base64はそれを108(81/3 x 4)に変換します。

于 2009-06-13T16:24:53.573 に答える
1

暗号化されたテキストは、テキストよりも数倍大きい最初の暗号ブロックサイズになります。AlgorithmBlockSizeプロパティを確認します。純粋なBase64エンコードでは、出力が3分の1増加しますが、特定のBase64シンボル(「+」や「/」など)をURLエスケープ(パーセントエンコード)する必要がある場合は、これが異なる可能性があります。

于 2009-06-13T16:30:00.783 に答える