Perl DES CBC加密会产生更多字节

时间:2014-02-20 07:54:56

标签: perl encryption des cbc-mode

我正在使用Perl使用Crypt :: CBC库执行CBC DES加密:

#!/usr/bin/perl
use Crypt::CBC;
$key  = "\x4A\x6F\xC2\x2A\x44\xE2\xA4\x48"; 
$iv   = "\x00\x00\x00\x00\x00\x00\x00\x00";
$data = "\x51\x55\x45\x53\x54\x49\x4F\x4E";

print "TXT->", $data, "\n";
print "HEX->", unpack("H*", $data), "\n";
$cipher = Crypt::CBC->new(-literal_key => 1,
                    -key         => $key,
                    -iv          => $iv,
                    -header      => 'none');

$ciphertext = $cipher->encrypt($data);
print "ENC->", unpack("H*", $ciphertext), "\n";

代码的输出是:

TXT->QUESTION
HEX->5155455354494f4e
ENC->8220553e09f1b31ba7691f3f7fb52416

我的数据方便,大小为64位(16位十六进制数字),符合DES标准。根据维基百科

  

DES是原型块密码 - 一种算法,它采用固定长度的明文位串,并通过一系列复杂的操作将其转换为相同长度的另一个密文位串

为什么编码输出的字节长度比原始输入长?

感谢。

2 个答案:

答案 0 :(得分:3)

从第二个块(a7691f3f7fb52416)向后工作得到8a285d3601f9bb13,与第一个块(8220553e09f1b31b)的XORed给出0808080808080808(HEX)。正在产生块值0808080808080808作为第二个输入块值。

CBC Values

所以你要做的就是找出退格字符作为第二个块输入的来源。

请参阅https://metacpan.org/pod/Crypt::CBC

此:

#!/usr/bin/perl

use Crypt::CBC;
$key  = "\x4A\x6F\xC2\x2A\x44\xE2\xA4\x48"; 
$iv   = "\x00\x00\x00\x00\x00\x00\x00\x00";
$data = "\x51\x55\x45\x53\x54\x49\x4F\x4E";

print "TXT->", $data, "\n";
print "HEX->", unpack("H*", $data), "\n";
$cipher = Crypt::CBC->new(-literal_key => 1,
                    -key         => $key,
                    -iv          => $iv,
                    -header      => 'none',
                    -padding     => 'null');

$ciphertext = $cipher->encrypt($data);

print "ENC->", unpack("H*", $ciphertext), "\n";

都给:

  

david_koontz @ Macbook:cbc_des
  TXT-> QUESTION
  六角形> 5155455354494f4e
  ENC-> 8220553e09f1b31b
  david_koontz @ Macbook:

我犯了错误,因为我对DES非常了解,而不是perl。

在我学会了如何将Crypt :: CBC和Crypt :: DES添加到perl库之后,添加padding null似乎可以解决问题。

我使用http://code.google.com/p/dpades/source/browse/trunk/simu_js/JS-DES.html进行必要的加密和解密,以弄清楚发生了什么。使用视图原始文件按钮并在本地保存JS-DES.html,使用浏览器打开它。

答案 1 :(得分:0)

加密消息更长,因为它包含IV。顺便说一句,一个固定的IV没有意义,它应该是随机的,并且每个消息都是新生成的。

相关问题