68user's page 掲示板

Prev< No. 3160〜3163> Next  [最新発言に戻る] [過去ログ一覧]
No. 3160 # saki 2003/03/26 (水) 20:16:43
お世話になります。

gcc(全般)でコンパイルした実行ファイルには
チェックサムは付加されているのでしょうか?

No. 3161 # 68user 2003/03/26 (水) 20:34:52
>>3160 saki
> チェックサム
の意味がわかりません。

ファイル転送などで化けてしまったバイナリを実行しようと
すると、「チェックサムが一致しません」とか言ってくれる、
ような感じですか? もしそうなら、そういう機能は聞いたこと
ありません。

もしかして、そういうのが可能なコンパイラがあるのでしょうか。

No. 3162 # saki 2003/03/26 (水) 21:16:03
>>3161 68user
68userさん ご返答ありがとうございます。

そのチェックサムです。
ファイルをバイナリで開いて、そのファイルの全バイナリ値の合計のこと
だそうです。(すいません私もあまり詳しくないのです。)

あるファイルをコピー(ダウンロード)する時に、
コピー前のファイルとコピー後のファイルのチェックサムを
比較して、あっていればコピーが正常、あっていなければ異常と
するプログラムを作りたいと思っていまして、

> gcc(全般)でコンパイルした実行ファイルには
> チェックサムは付加されているのでしょうか?
とお聞きしたのは、ファイルそのものにチェックサムが付加されていれば
ファイルをオープンしてチェックサムの値を比べるだけで済むのかなぁと
思いまして・・・。

そういう機能がないのであれば、チェックサム自体をプログラムで
作ろうと思い、
ネットで調べたのですが簡単すぎるからなのか情報があまりありません。

参考になるサイトや本などあれば、勉強したいのですが、
ご存知のかたはいますでしょうか?

No. 3163 # 68user 2003/03/27 (木) 02:40:54
>>3162 saki
チェックしたいのがバイナリだけでいいのか、データファイルも
含むファイル一般なのかわかりませんが、前者であれば gzexe
      http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=gzexe&dir=jpman-5.0.0%2Fman
を使うのが簡単でしょう。gzexe は実行ファイルを圧縮しておく
ためのコマンドですが、実行時に gzip で展開するので、結果的に
gzip の誤り検出機能をそのまま利用できます。gzexe も 圧縮した
実行ファイルも、いずれも sh スクリプトですので、改造も簡単
でしょう。

後者であれば、単に gzip を使う手もありますし、あるいは
cksum や md5 などのコマンドを利用するのもいいでしょう。
    http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman
    http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=md5&dir=jpman-5.0.0%2Fman
    http://www3.cds.ne.jp/~marimo/data/rfc/rfc1321-jp.txt

なお、誤り検出のアルゴリズムとしては、
> ファイルをバイナリで開いて、そのファイルの全バイナリ値の
> 合計のことだそうです。
は単純すぎます。言っちゃ悪いですが、この程度の認識しか持っていない
のであれば、cksum や md5 などのコマンドを利用した方がよいです。

Prev< No. 3160〜3163> Next  [最新発言に戻る] [過去ログ一覧]