0

データの暗号化には Perl のモジュール Crypt::CBC を使用しました。コードは次のようになります

use Crypt::CBC;
my $cipher = Crypt::CBC->new( -key    => 'herearemykey',
                              -cipher => 'Blowfish'
                            );

my $ciphertext = $cipher->encrypt($password);

しかし、同じ平文に対して異なる暗号文を取得しています。平文の結果を同じ暗号文で暗号化する他の方法はありますか?

4

3 に答える 3

1

同じプレーンテキストを使用して、暗号化された結果を同じままにしたいのはなぜですか?これを行うには、提供する必要のない情報が提供されます。あなたが主張するなら、あなたはここでsalt説明されているようにコモンを提供することを検討するかもしれません。

于 2012-06-26T13:16:21.820 に答える
1

これは、 CBC モードの暗号の機能と見なされます。最初のランダムな IV があり、次に各平文ブロックが前の暗号文ブロックと XOR されます。これにより、2 つの同一の平文ブロックが同じ結果になる単純な ECB モードで可能な特定の巧妙な攻撃が防止されます。

暗号文がまったく同じであることはめったに重要ではありません。相手側で正しく復号化する必要があるだけです。原則として、特別な理由がない限り、常に CBC モードを使用してください。特定の理由がある場合でも、単純で素朴な ECB モードよりも優れた代替手段がおそらくあります。

于 2012-06-26T14:04:10.387 に答える
1

特定の平文に同じ暗号文が必要な場合は、同じ IV (初期化ベクトル) も CBC に渡す必要があります-次のように:

 my $cipher = Crypt::CBC->new( -key => 'herearemykey',
                               -cipher => 'Blowfish', 
                               -iv => 'randomXY', 
                               -header => 'none' );
于 2012-06-26T15:10:02.470 に答える