使用Crypt :: CBC进行数据加密

时间:2012-06-26 12:55:48

标签: perl encryption

我们使用Perl的模块Crypt :: CBC来加密数据。 代码看起来像

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

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

但我们正在为同一个纯文本获取不同的密文。是否有其他方法可以在同一密文中加密纯文本结果?

3 个答案:

答案 0 :(得分:1)

为什么您希望加密结果在相同的纯文本下保持不变?为此,提供无需提供的信息。如果您坚持,可以考虑提供here所述的常见salt

答案 1 :(得分:1)

这被视为CBC mode中密码的一项功能。有一个初始随机IV,然后每个明文块与前一个密文块进行异或。这可以防止在直接的ECB模式下可能出现的某些明智的攻击,其中两个相同的明文块将会出现相同的情况。

密文的出现同样重要;它只需要在另一端正确解密。通常,除非您有特殊原因,否则请始终使用CBC模式。即使你有特定的理由,也可能有一种比简单,天真的ECB模式更好的选择。

答案 2 :(得分:1)

如果你想为给定的明文提供相同的密文,你必须将相同的IV(初始化向量)传递给CBC - 就像这样:

 my $cipher = Crypt::CBC->new( -key => 'herearemykey',
                               -cipher => 'Blowfish', 
                               -iv => 'randomXY', 
                               -header => 'none' );