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";