見出し画像

[コラム]ネットワークエンジニアの現場から(7)ファイルの同一性

キーワードのご紹介

皆さんこんにちは。セッテンくんです。
IT企業への就職を検討しているが、システムエンジニアリングの仕事ってイメージが付きづらい…。

そんな方に向けて、みなさんの興味とIT実務の接点をお届けしていきます。
今日のキーワードは"チェックサム"です。

日常との関わり

ネットで欲しいと思ったものが格安で買えたと思ったら外箱だけ届いた、中古で購入したものがそもそも電源が入らなかった…。
パッと見ではわからない、実は期待したものと違うものを手にしてがっかりした経験はありませんか。
手に触れられない電子ファイルではなおのこと注意が必要です。
今日はファイルの同一性について注目していこうと思います。

聞こえてきた会話

前回同様、先輩後輩関係と見受けられる2人がネットワーク機器のOS(Operating System。機器全体の動作を管理する役割があり、一般的にサイズが大きい)ファイルを機器に入れて使おうとしているようです。
A「今入れたOSを指定して再起動して。」
B「同じファイル名なのでこれを指定します。」
A「ファイル名だけだとファイル破損の可能性があるから、ファイルサイズを転送元のファイルと見比べよう。」
B「なるほど。」
セッテンくん「うーん。ちょっといいですか!?」
おせっかいかなと思いつつ、やっぱり会話に割り込んでしまいました。

手軽で片手落ちな確認方法

ファイルが同一か見る方法で思いつくのが、Aさんも見ていた拡張子を含めたファイル名が同一かです。
人間はまずここで判断するかと思いますが、内容が全く別のファイルにも同じファイル名は付けられるので、粗い確認となります。
次に、Bさんが言っていたファイルサイズでの確認です。
サイズが違えば、例えばファイルのコピー中にエラーが起きた等でファイルが破損していると気付けるというものです。
ファイル名を確認するコマンドの結果としてファイルサイズも同時に出力されることが多いためか、一定の人気(?)がある確認方法です。
ただ、例えば操作ミスでファイル内の1文字消して1文字別の字追加してしまった場合、差分のあるファイルで同一の値になってしまいます。
また、ファイルサイズを確認する環境が違えば、ファイルサイズの"G(ギガ)"や"M(メガ)"等の表記で1000倍か1024倍か、異なるケースもあり得るため、必ずしもお手軽な確認とも言えません。

チェックサム

そこで、確実性を求めてよく利用されるのがチェックサムです。
チェックサムとは確認したいデータに対し、ある定数を用いて計算した結果のチェック用のデータを出し、比較することデータに誤りがないかを確認する方法です。
身近なところだとバーコードや、大学の学生番号等にも用いられていることがあります。
ファイルの同一性を確認するには、同一のハッシュアルゴリズムを利用して求めた、コピー元の正しいファイルでのチェックサムと、コピー先でのチェックサムを比較します。
チェックサムが一致していれば、ファイル自体も同一とみなせるという流れになります。
なお、同一のハッシュアルゴリズムを利用して、別のファイルが同一のチェックサムとなるケースもあります。ただし、元のファイル内容自体は全く別のものとなり、コピー前後の破損等では起こりえない事象です。

チェックサムを確認する方法

OSファイル等の場合、メーカサイト等にチェックサムが掲載されています。
MD5やSHA-256といった複数のハッシュアルゴリズムで記載されていることがあるので、確認する際にも同じハッシュアルゴリズムを使用する必要があります。
機器上からの確認する例としてWindowsのコマンド プロンプトと、CiscoのIOSでの確認コマンドを記載します。
これらのコマンドの出力結果と、サイト等コピー元から入手したチェックサムを比較し、完全に一致することを確認します。

Windows

CertUtil -hashfile  [filePath] [HashAlgorithm]

Cisco

verify /[HashAlgorithm] [filePath]

おわりに

このような技術や手法を組み合わせ、弊社では日々お客様の困ったを解決するサービスを提供しています。
この記事を読んで、少しでもIT企業で働くイメージが湧き始めたら、ぜひ弊社HPも確認してみてください。