Perl Crypt関数 

Crypt関数
$code = crypt(“pass”,”key”);

サーバーにLOGINパスワードを保存しておくのは
危険なので暗号化して保存しておけば気が楽です。

crypt関数を利用しDESで暗号化しようとインターネットで探していると
Crypt暗号生成CGI
このようなページを発見しましたので勉強の息抜きに
自分で上と同じような動作をするものを書いて見ました。
(上のプログラムのソースは見ていません。動作のみを参考にしました。)

Crypt関数を利用した暗号化

※本プログラムはデコードに
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/</&lt;/g;
   $value =~ s/>/&gt;/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
   ;
}

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)