暗号化・復号化できる単純なテキストの暗号化

$ENC_KEY1=11; # 1〜200くらい
$ENC_KEY2=5; # 1〜20くらい

$a="Test テスト";
$b=&strEnc($a);
print "Enc:$b\n";
print "Dec:".&strDec($b)."\n";

exit;

sub strEnc{
 my $a=$_[0];my $i;
 for($i=0;$i<length($a);$i++){substr($a,$i,1)=chr((ord(substr($a,$i,1))-$ENC_KEY2)^$ENC_KEY1);}
 $a=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg;
 return $a;}

sub strDec{
 my $a=$_[0];my $i;
 $a=~s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",hex($1))/eg;
 for($i=0;$i<length($a);$i++){substr($a,$i,1)=chr((ord(substr($a,$i,1))^$ENC_KEY1)+$ENC_KEY2);}
 return $a;}
実行結果
Enc:Dked%10ukuXui
Dec:Test テスト

Back