我们使用Perl的模块Crypt :: CBC来加密数据。 代码看起来像
use Crypt::CBC;
my $cipher = Crypt::CBC->new( -key => 'herearemykey',
-cipher => 'Blowfish'
);
my $ciphertext = $cipher->encrypt($password);
但我们正在为同一个纯文本获取不同的密文。是否有其他方法可以在同一密文中加密纯文本结果?
答案 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' );