
#●
#---------------------------------------------------------------------------------------
# 名称     | MakeCrypt
# Version  | 1.00
# 処理名   | 暗号処理
# 動作内容 | 文字列の暗号化
# 引数     | 平文
# 戻り値   | 暗号
#
sub MakeCrypt {

	local($plain) = @_; # 入力:平文
	local(@char,$f,$now,@saltset,$pert1,$pert2,$nsalt,$salt);

	@saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); # 暗号が構成される文字群
	$now = time; # ↓この辺は通称「らくだの本」を参照
	srand(time|$$);
	$f = splice(@saltset,rand(@saltset),1) . splice(@saltset,rand(@saltset),1);
	($pert1,$pert2) = unpack("C2",$f);
	$week = $now / (60*60*24*7) + $pert1 + $pert2 - length($plain);
	$nsalt = $saltset[$week % 64] . $saltset[$now % 64];

	$result = crypt($plain,$nsalt);
	if ($result =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; }
	if (crypt($plain,substr($result,$salt,2)) ne $result || $result eq '') { &Error("暗号処理エラー","パスワードの暗号化に失敗しました.","戻って再度実行してください."); } # 稀に暗号処理が正しくされていない場合があるので

	return $result; # 戻値:暗号

}#End_of_MakeCrypt

