2012年 11月 08日

gerry++

OpenSSL のあの暗号化って Perl でどうやんの?

DES, 3DES (またの名をDES EDEあるいはTripleDES) * ECB, CBC だけ。最初、 Crypt::TripleDES というモジュールが見つかったので試したけど一向にうまくいかず、EDE のほうを見つけるのに苦労しました。

#!perl
use v5.12;
use utf8;
use strict;
use warnings;

use Crypt::ECB;
use Crypt::CBC;

use Crypt::DES;
use Crypt::DES_EDE3;

use MIME::Base64;
use Test::More;
use File::Temp;

sub openssl ($$) {
	my ($args, $content) = @_;
	my $fh = File::Temp->new;
	print $fh $content;
	close $fh;
	my $cmd = "openssl $args -in " . $fh->filename;
	note $cmd;
	my $ret = `$cmd`;
	chomp $ret;
	$ret;
}

subtest 'DES ECB' => sub {
	my $key = '1' x 16;
	is openssl("enc -e -nopad -des-ecb -K $key -base64", "foobar  "), do {
		my $cipher = Crypt::ECB->new;
		$cipher->key(pack("H16", $key));
		$cipher->cipher('DES');
		encode_base64($cipher->encrypt('foobar  '), '');
	};
};

subtest 'DES CBC' => sub {
	my $key = '1' x 16;
	my $iv  = '1' x 16;
	is openssl("enc -e -nopad -des-cbc -iv $iv -K $key -base64", "foobar  "), do {
		my $cipher = Crypt::CBC->new({
			cipher  => Crypt::DES->new(pack('H16', $key)),
			padding => 'none',
			header  => 'none',
			iv      => pack('H16', $iv),
		});
		encode_base64($cipher->encrypt('foobar  '), '');
	};
};

subtest '3DES ECB' => sub {
	my $key = '1' x 48;
	is openssl("enc -e -nopad -des-ede -K $key -base64", "foobar  "), do {
		my $cipher = Crypt::ECB->new;
		$cipher->key(pack("H48", $key));
		$cipher->cipher('DES_EDE3');
		encode_base64($cipher->encrypt('foobar  '), '');
	};
};

subtest '3DES CBC' => sub {
	my $key = '1' x 48;
	my $iv  = '1' x 16;
	is openssl("enc -e -des-ede-cbc -iv $iv -K $key -base64", "foobar"), do {
		my $cipher = Crypt::CBC->new({
			cipher  => Crypt::DES_EDE3->new(pack('H48', $key)),
			header  => 'none',
			iv      => pack('H16', $iv),
		});
		encode_base64($cipher->encrypt('foobar'), '');
	};
};

subtest '3DES CBC (space padding)' => sub {
	my $key = '1' x 48;
	my $iv  = '1' x 16;
	is openssl("enc -e -nopad -des-ede-cbc -iv $iv -K $key -base64", "foobar  "), do {
		my $cipher = Crypt::CBC->new({
			cipher  => Crypt::DES_EDE3->new(pack('H48', $key)),
			padding => 'space',
			header  => 'none',
			iv      => pack('H16', $iv),
		});
		encode_base64($cipher->encrypt('foobar'), '');
	};
};

done_testing;
2012年 11月 06日

関連エントリー (画像)

gerry++

2012年 11月 05日

gerry++

gerry++

2012年 11月 02日

関連エントリー (画像)

gerry++

2012年 11月 01日

関連エントリー (画像)

シャボン玉 酸素系漂白剤 750g - シャボン玉石けん

シャボン玉石けん

5.0 / 5.0

空気清浄機の加湿を使おうとしたら吹き出す風が若干臭くて、掃除マニュアル通りクエン酸溶液につけたり、消毒用アルコールをかけたりして、一時的にはよくなっても、すぐ臭くなってしまって2日に1度ぐらい掃除するみたいになって、これがだいぶストレスになっていた。

気化部分を見ると部分的に黒くなっていて、カビかなと思ったので、洗濯漕を綺麗にするために買って余った酸素系漂白剤をつかってみた。風呂場で湯船にお湯を溜めて、気化部分をひたして漂白剤をふりかけ、割り箸でときどきかき混ぜながら1時間ぐらい放置したら黒い部分はなくなった。

一応 (反応が終わっていれば無害だけど) 念入りにすすいでからセットしたら臭いは解決した。どのぐらい持つかわからないけど、しばらくは大丈夫そうな気がする。

酸素系の漂白剤は、塩素系のものほどには気を使わなくていいのが使いやすい。