|
お世話になります。 gcc(全般)でコンパイルした実行ファイルには チェックサムは付加されているのでしょうか? |
|
>>3160 saki > チェックサム の意味がわかりません。 ファイル転送などで化けてしまったバイナリを実行しようと すると、「チェックサムが一致しません」とか言ってくれる、 ような感じですか? もしそうなら、そういう機能は聞いたこと ありません。 もしかして、そういうのが可能なコンパイラがあるのでしょうか。 |
|
>>3161 68user 68userさん ご返答ありがとうございます。 そのチェックサムです。 ファイルをバイナリで開いて、そのファイルの全バイナリ値の合計のこと だそうです。(すいません私もあまり詳しくないのです。) あるファイルをコピー(ダウンロード)する時に、 コピー前のファイルとコピー後のファイルのチェックサムを 比較して、あっていればコピーが正常、あっていなければ異常と するプログラムを作りたいと思っていまして、 > gcc(全般)でコンパイルした実行ファイルには > チェックサムは付加されているのでしょうか? とお聞きしたのは、ファイルそのものにチェックサムが付加されていれば ファイルをオープンしてチェックサムの値を比べるだけで済むのかなぁと 思いまして・・・。 そういう機能がないのであれば、チェックサム自体をプログラムで 作ろうと思い、 ネットで調べたのですが簡単すぎるからなのか情報があまりありません。 参考になるサイトや本などあれば、勉強したいのですが、 ご存知のかたはいますでしょうか? |
|
>>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 などのコマンドを利用した方がよいです。 |