Perl 使用Crypt::CBC进行数据加密
我们使用了Perl的模块Crypt::CBC来加密数据。 代码看起来像Perl 使用Crypt::CBC进行数据加密,perl,encryption,Perl,Encryption,我们使用了Perl的模块Crypt::CBC来加密数据。 代码看起来像 use Crypt::CBC; my $cipher = Crypt::CBC->new( -key => 'herearemykey', -cipher => 'Blowfish' ); my $ciphertext = $cipher->encrypt($password);
use Crypt::CBC;
my $cipher = Crypt::CBC->new( -key => 'herearemykey',
-cipher => 'Blowfish'
);
my $ciphertext = $cipher->encrypt($password);
但是对于同一个纯文本,我们得到了不同的密码文本。是否有其他方法可以在相同的密文中加密纯文本结果?如果是相同的纯文本,为什么希望加密结果保持不变?这样做可以提供不需要提供的信息。如果您坚持,您可能会考虑提供一个通用的
salt
。为什么要在相同的纯文本中保持加密结果不变?这样做可以提供不需要提供的信息。如果您坚持,您可能会考虑提供一个通用的salt
。这被认为是密码的一个特性。有一个初始的随机IV,然后每个明文块与前一个密文块异或。这可以防止直接ECB模式下可能出现的某些巧妙攻击,即两个相同的明文块将出现相同的结果
密文以相同的方式输出很少重要;它只需要在另一端正确解密。通常,除非您有特殊理由不使用CBC模式,否则请始终使用CBC模式。即使您有特定的原因,也可能有比简单、朴素的ECB模式更好的选择。这被认为是密码的一个特征。有一个初始的随机IV,然后每个明文块与前一个密文块异或。这可以防止直接ECB模式下可能出现的某些巧妙攻击,即两个相同的明文块将出现相同的结果
密文以相同的方式输出很少重要;它只需要在另一端正确解密。通常,除非您有特殊理由不使用CBC模式,否则请始终使用CBC模式。即使您有特定的原因,也可能有比简单、朴素的ECB模式更好的选择。如果您希望给定明文使用相同的密文,您还必须将相同的IV(初始化向量)传递给CBC-如下所示:
my $cipher = Crypt::CBC->new( -key => 'herearemykey',
-cipher => 'Blowfish',
-iv => 'randomXY',
-header => 'none' );
如果您希望给定明文使用相同的密文,则必须将相同的IV(初始化向量)传递给CBC,如下所示:
my $cipher = Crypt::CBC->new( -key => 'herearemykey',
-cipher => 'Blowfish',
-iv => 'randomXY',
-header => 'none' );
警告,威尔·罗宾逊:如果你不将(随机)IV与加密数据一起存储,你将失去对数据的访问权。预挂起IV是最明显的选择(因为在解密第一个块时您需要它)。警告,will Robinson:如果您不使用加密数据存储(随机)IV,您将失去对数据的访问权限。预挂起IV是最明显的选择(因为在解密第一个块时需要它)。