トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2012-3-22の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!Perlで暗号発生をやてみる{{category 道楽}}
まず二つのキーワードを発生スクリプトへ送る導入ページは楽したいので、CGIでなくhtmlで作っておくことにした。
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html><head>
 <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
 <title>Own001:暗号発生テスト</title>
 </head><body>
 <h1 class=title>Own001:暗号発生テスト</h1>
 <FORM ACTION="./test.cgi" enctype="multipart/form-data" method="post">
 	発生pass:
 	<INPUT TYPE="text" NAME="pass9" value="hogehage"><BR>
 	比較Pass:
 	<INPUT TYPE="text" NAME="pass0" value="hikaku"><BR>
 	<br/>
 	<INPUT TYPE="reset" VALUE="やんぴ">
 	<INPUT TYPE="submit" NAME="all" VALUE="実行">
 </form></body></html>

まず主役の暗号発生と照合用暗号発生のサブを準備。

 #パスワードのエンコ(単独)
 sub pass_e {
 	my($pass) = @_;
 	my @moji = ('a'..'z','A'..'Z','0'..'9');
 	srand;
 	my $key0 = int(rand(64));
 	my $key1 = int(rand(64));
 	my $key2 = $moji[$key0] . $moji[$key1];
 	return crypt($pass,$key2);
 }
 #パスワードのエンコ(再現)
 sub pass_c {
 	my($pass,$pass9) = @_;
 	my $key2;
 	if($pass9 =~ /^\$1\$([^\$]+)\$/) {
 	   $key2 = $1;
 	} else {
 	   $key2 = substr($pass9, 0, 2);
 	}
 	return crypt($pass, $key2);
 	return crypt($pass, $pass9);
 }

次にパラメータの受け取りなど

 #!/usr/bin/perl
 use CGI qw(:standard);
 $pass9 = param('pass9');
 $pass0 = param('pass0');
 my $ret1 = &pass_e($pass9);
 my $ret2 = &pass_c($pass0,$ret1);

残りは、比較と結果表示で、めんどうになったのでここまでとする。