#!/usr/local/bin/perl use Digest::SHA qw( sha1 sha1_base64 sha1_hex sha224 sha224_base64 sha224_hex sha256 sha256_base64 sha256_hex sha384 sha384_base64 sha384_hex sha512 sha512_base64 sha512_hex sha512224 sha512224_base64 sha512224_hex sha512256 sha512256_base64 sha512256_hex); # アプできるファイルの最大サイズ(Mega Byte) $mb = '1'; # スクリプトのタイトル $title = 'なんでもSHA変換機'; if ($ENV{'PATH_INFO'} eq '/source') { print "Content-type: text/plain; charset=utf-8;\n\n"; open(R, "./make_SHA.cgi"); print while ; close(R); exit; } $max_size = $mb * 1024 * 1024; if ($ENV{'CONTENT_LENGTH'} > $max_size) { $error = 'ファイルが大きすぎます!'; } if (!$ENV{'CONTENT_LENGTH'} || $error) { &html; } binmode(STDIN); read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); $buffer =~ /filename=\".+\.(.+)\"\r\n/; $ext = $1; if ($ext eq "") { &html; } $buffer =~ /\r\n\r\n/; $buffer = $'; $buffer =~ s/\r\n.+\r\n$//; if ($buffer) { $value = ''; $value.= '
';
  $value.= "-" x 240;

  $value.= "\n  sha1_hex\t\t:  "; $value.= sha1_hex($buffer);
  $value.= "\n  sha1_base64\t\t:  "; $value.= sha1_base64($buffer);

  $value.= "\n  sha256_hex\t\t:  "; $value.= sha256_hex($buffer);
  $value.= "\n  sha256_base64\t\t:  "; $value.= sha256_base64($buffer);

  $value.= "\n  sha512_hex\t\t:  "; $value.= sha512_hex($buffer);
  $value.= "\n  sha512_base64\t\t:  "; $value.= sha512_base64($buffer);

  $value.= "\n  sha512224_hex\t\t:  "; $value.= sha512224_hex($buffer);
  $value.= "\n  sha512224_base64\t:  "; $value.= sha512224_base64($buffer);
  $value.= "\n";

  $value.= "-" x 240;
  $value.= '
'; } $error = "

Encode完了デス。

\n"; $error.= $value; &html; sub html { print "Content-type: text/html\n\n"; print <<"_HTML_"; $title

$title [ソース]

$stack $error

(約 $mb Mega\Byteまで)
_HTML_ exit; }