• 締切済み

Perlで、アップロードしたファイルの改ざんを発見する

こんばんは、初心者なので困っています。 Perlで以下のような物を作成しろと言われました。 「サーバにアップロードされたバイナリファイルを、アップ後に、改ざんされたかどうか判るように、そのファイルについてのデータベースを作りなさい。 そのデータというのは、ファイルを数分割して、それぞれの頭の数字の合計の事で、それを保管しておけば改ざんされた時にはその数字が変わっているので発見できる」 という事でした。 この様な事は可能なのでしょうか? 可能でしたら、見当が付かないので参考になるHPなどはありませんでしょうか? よろしくお願いします。

みんなの回答

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.3

>データが改ざんされる時はどれくらいのバイト単位で変わるものなのでしょうかね。 こればかりは改竄する人に聞いてみないことにはわからないですね(笑)。 チェック対象とするそのバイナリファイルがどういう質のものか、改竄の目的に因ると思います。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

MD5を使用されてはいかがですか。perlによるMD5の実装もあるようです。下記を参照ください。perl MD5で検索すれば、そこそこヒットしますよ。

参考URL:
http://perldoc.jp/docs/modules/Digest-Perl-MD5-1.5/MD5.pod
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

チェックサムですね。 ファイルをバイナリモードでオープンして、適当な間隔(例えば256バイト)でseekしてその数値を足し込んでいけばよいでしょう。 改竄されたかどうかは確率的なもので、発見できない場合もあると思いますが、良くある手段ではないでしょうか。

noname#10457
質問者

補足

早いお返事ありがとうございます。 チェックサムというのですね。 その呼称が判っただけでも、これについて早く調べる事ができました。 今日、それなりのものが形になりました。 yatokesaさんの例のように256バイト間隔で作ってみましたが、 データが改ざんされる時はどれくらいのバイト単位で変わるものなのでしょうかね。

関連するQ&A