2009-06-13 16 views
2

私は、ファイルにし、データベースの両方で、暗号化された状態でいくつかの情報を格納するアプリケーションを持っています。結果の暗号テキストの長さをプレーンテキスト入力に基づいて計算するにはどうすればよいですか?暗号化操作で生成される結果の暗号テキストの長さを事前に決定するにはどうすればよいですか?

暗号化操作は、.NET RijndaelManagedクラス/アルゴリズム、次いで貯蔵前にBase64文字列への変換を使用することからなります。

私ができることをしたいのは、暗号化された文字列が与えられた入力に対してどのくらいの期間保持されるかを知っていることです。もし意味があれば!)。

おかげ

答えて

6

ラインダールの出力は、入力と同じサイズである、ブロックサイズ(通常128ビット、別名16バイト)の次の最も近い倍数に切り上げ。 Base64は入力を4/3に拡張します。各3バイトの入力を表すために4バイトの出力が必要です。

たとえば、入力が70バイトの場合、暗号化ステップでは80バイトの出力(最も近い16の倍数が70より大きい)が生成され、Base64で108が出力されます(81/3倍4)。

+0

優れた、ありがとう! –

+2

PKCS7Padding(おそらくそうです)を使用している場合、暗号化ステップは最も近い_strictly_larger_倍の長さを拡大します。例えば。 64バイトは80バイトになります。あなたはおそらくそれを知っていますが、あなたの例では、 "(最も近い16の倍数が70より大きい)"ではなく、 "(最も近い16の倍数= 70)"と書いてあります。 –

+0

@Rasmus、素晴らしい点、ありがとう - 私> =それらの厄介なものの1つは、エラー:-(。 –

1

暗号化されたテキストは、テキストよりも大きい最初の暗号ブロックサイズの倍数になります。アルゴリズムBlockSizeプロパティをチェックします。純粋なBase64エンコーディングは、第三で出力を増加させるが、あなたも(「+」と「/」のような)(パーセントエンコード)特定のBase64記号URLエスケープする必要がある場合に異なります。

関連する問題