Crypt関数
$code = crypt(“pass”,”key”);
サーバーにLOGINパスワードを保存しておくのは
危険なので暗号化して保存しておけば気が楽です。
crypt関数を利用しDESで暗号化しようとインターネットで探していると
Crypt暗号生成CGI
このようなページを発見しましたので勉強の息抜きに
自分で上と同じような動作をするものを書いて見ました。
(上のプログラムのソースは見ていません。動作のみを参考にしました。)
※本プログラムはデコードに
jcode.plを使用しています。
※プログラムはご自由にお使い下さい。
#!/usr/bin/perl ################################################## # Cryptを利用した暗号化出力ソフト # # 作者:orbit # HP:https://www.orsx.net/ # ################################################## #------------各種設定------------ #このプログラムまでのURL $url = "crypt.cgi"; $hp_name = "関数CRYPTを利用した暗号化"; #------------各種設定------------ #-------------------------------- #メインルーチン開始 #-------------------------------- #デコード require './jcode/jcode.pl'; if($ENV{'REQUEST_METHOD'} eq "POST"){ #POSTで送信されたデータを変数$dataへ格納 read( STDIN, $data, $ENV{ 'CONTENT_LENGTH' } ); }else{ #GETで送信されたデータを変数$dataへ格納 $data = $ENV{'QUERY_STRING'}; } #&で区切られているデータを分解 @pairs = split(/&/,$data); foreach $pair (@pairs) { #=で区切られているデータを分解 ($name, $value) = split(/=/, $pair); #16進数に戻す $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #タグの無効化 $value =~ tr/+/ /; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/n/<br />/g; $value =~ s/t/ /g; $value =~ s/r//g; #ライブラリー内のconvertサブルーチンの実行 &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } #-------------------------------- #HTML出力 #-------------------------------- #変数へ格納 $id = $FORM{'id'}; $pass = $FORM{'pass'}; #パスをキーで暗号化 $s_pass = crypt($pass,$id); #$passと$s_passが同じで無ければステートメントを実効 if ($pass ne $s_pass){&after}; &head; print <<html <h1>Crypt関数を利用した暗号化</h1> <form method="GET" action="$url"> ID:<input size="15" name="id" type="text" value="ORBIT SPACE"> PASSWORD:<input size="15" name="pass" type="text" value="www.orsx.net"> <input value="OK" type="submit"></from> <hr /> $come <br /> <br /> <br /> <small> <center> HP:<a Href="https://www.orsx.net/" Target="_blank">ORBIT SPACE</a> </center> </small> </body> </html> HTML ; #================================ #サブルーチン(結果出力) #================================ sub after{ $come = <<html $id / $pass >>>> <input size="15" type="text" value="$s_pass"> HTML ; } #================================ #サブルーチン(ヘッター) #================================ sub head{ #コンテンツタイプの指定 print "Content-type: text/htmlnn"; print <<head <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>$hp_name</title> </head> <body> HEAD ; }
0 Comments.