2011-11-13 14 views
2

TwoFishで暗号化を使用する場合、最後のプレーンテキストブロックが128ビット未満の状況になることは避けられません。その場合、パディングはどのように処理されますか?例えば、最後のブロックが112ビット(14バイト)だけであるとします。あなたはちょうどランダムなビットでバイト15を記入し、どのくらいのパディングがブロックに含まれているかを知るために16番目のバイトを使用しますか?この場合、ブロックの16ビットがパディングであることを示すために、最後のバイトが00010000を含むことができる。TwoFishの平文ブロックの埋め込み

答えて

2

今日、一般的に使用されているいくつかの異なるpadding mechanismsがあります。どちらが選択されるかは、主にプロトコル設計者が1つを選択し、それがそのプロトコルの標準であると言います。 (私は他のものより1つを選ぶ魅力的な理由はわかりません)

私が知っている最も一般的なものは、サブバイト(ビットレベル)パディングを許可するために働いています。1ビットの後にブロックを終了するために多くの0ビットが必要です。

私が知っている次の最も一般的なものは、ゼロまたはランダムデータを埋め込み、ブロックの最後のバイトを使用してパディングに使用されたバイト数を示します。

パディングに使用するバイト数は必要ですが、バイト数として使用することもできます。あなたはなど、パッド4つのバイトに必要がある場合は、0x04 0x04 0x04 0x04を1つのバイトを追加する必要がある場合0x01とパッド

あなたを追いつくかもしれない一つの小さなトリックは、あなたがほとんど常にパディングブロックを追加する必要があるということである - 場合でも、ブロック全体がパディングされているので、可逆変換が可能です。メッセージがブロックサイズの倍数のときにパディングブロックを追加することを怠った場合は、正当なメッセージの内容をパディングとして取り除こうとする可能性があります。あなたは、他の何らかの仕組みによってパディングの欠如を知らせることもできますし、常にパディングを追加することもできます。 (これはしばしば簡単です)

+0

非常に詳細な応答をいただきありがとうございます。私ができるなら、あなたに1つ以上の投票を与えるだろう。 – Pinsickle

+0

完璧な答え。ありがとう。 – davidf2281

関連する問題