18

Triple DES を使用して暗号化された文字列を格納するデータベース列を作成する必要があります。暗号化された文字列列の長さを確認するにはどうすればよいですか?

(Triple DES 以外のアルゴリズムの回答も歓迎します。)

4

3 に答える 3

25

DES、3DES、AESなどのブロック暗号は、バイトのブロックでのみ動作できます。DESおよび3DESは8バイトのブロックで動作し、AESは16バイトのブロックで動作します。

これを処理するには、通常、暗号化する前に平文に可逆的なパディングを適用します。ほとんどの場合、「PKCS」パディング(PKCS5-またはPKCS7-パディングとも呼ばれます)になります。

PKCS-paddingは、パディングされたテキストの長さがブロック長(3DESの場合は8バイト)で割り切れる長さになるように、少なくとも1バイトを追加します。padding-bytesの値は、追加されたバイト数です。Fx。ABCDEFはABCDEF0505050505にパディングされ、0011223344556677は0011223344566770808080808080808にパディングされます。これは簡単に削除できることに注意してください。パディングされたバイトの最後のバイトを見て、1からブロック長の間であることを確認し、そのバイト数を削除します。最後から(削除された各バイトに正しい値があることを確認します)。

最後に、質問に答えます。CBC暗号化とPKCSパディングを備えた3DESを使用していると仮定すると(おそらくそうですが)、長さnの文字列の暗号化の長さは次のようになります。

n + 8 - (n % 8)
于 2009-01-20T21:35:43.043 に答える
4

トリプル DES を使用しても文字列の長さは変わりませんが、次の 64 ビット境界に丸められます。「表示」する場合は、エンコードする必要があります(Base64のように.

他のアルゴリズムについては、たくさんあるので答えにくいです。ブロック暗号は、ブロック サイズに合わせて常に入力をパディングしますが、多くのストリーム暗号はそうではありません。

于 2009-01-19T10:52:23.360 に答える
1

トリプル DESは 3 つの 56 ビット DES キーを使用して、168 ビット キーを提供します。ブロックサイズは64 ビットです。

于 2009-01-19T10:42:13.003 に答える