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 桁の 16 桁) で、DES 標準に準拠しています。ウィキペディアによると
DES は典型的なブロック暗号です — 平文ビットの固定長文字列を取り、一連の複雑な操作によって同じ長さの別の暗号文ビット文字列に変換するアルゴリズムです
エンコードされた出力のバイト長が元の入力よりも長いのはなぜですか?
ありがとう。