perlで、暗号化したデータをSocketで送信する

Crypt::CBC - 暗号ブロック連鎖(Cipher Block Chaining)モードでデータを暗号化します - perldoc.jp

Perlによる共通鍵暗号方式でのSocket通信。クライアント部分。
DESは8ビットしか(超・未満)暗号化できないけれど、Crypt::CBCを使えば8ビットを超えるのデータも8ビットずつ暗号化してくれます。8ビット未満の最後の端数もうまいこと処理してくれます。ローカルの入出力はいい加減です。
※DES以外の暗号化方式も処理できます。

#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket;
use Crypt::CBC;
use utf8;

open (IN,"sock_crypt.txt"); #暗号化したいデータ
binmode IN;

# オブジェクト作成
my $cipher = Crypt::CBC->new({'key'             => 'aaaaaaaa', #鍵パスフレーズ
                              'cipher'          => 'DES', #暗号化の方法
                              'iv'              => '$KJh#(}q', #初期ベクトル
                              'regenerate_key'  => 0,
                              'padding'         => 'standard',
                              'prepend_iv'      => 0
                              });

# 暗号化
my $ciphertext = $cipher->encrypt(<IN>);

my $sock = IO::Socket::INET->new(PeerAddr => 'xxx.xxx.xxx.xxx', #送信先サーバのIPアドレス
                                 PeerPort => 'xx', #送信先サーバのListenポート番号
                                 Proto => 'tcp'); #プロトコル

$sock->send($ciphertext); #送信

#送信後、何か受けるものがあれば下記で受信
my @recv = <$sock>;
close($sock);
print @recv, "\n";