【发布时间】:2014-03-21 00:36:00
【问题描述】:
我正在使用 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 是典型的分组密码——一种算法,它采用固定长度的明文位串,并通过一系列复杂的操作将其转换为另一个相同长度
的密文位串
为什么编码后的输出比原始输入的字节长?
谢谢。
【问题讨论】:
标签: perl encryption des cbc-mode