« HSPTV!メルマガ第8号 | メイン | 【講座】HSPよく使うフレーズ 第1回 乱数を表示する »

2006年01月17日

【講座】HSP3ワンポイントテクニック 第6回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。
今回は、ファイルのハッシュ値について覚えてみましょう。
これは、HSP3から追加されたプラグイン「hspinet」に搭載されている
機能の1つです。

#include "hspinet.as"
dialog "",16
fname = refstr
mes "FILE="+fname
filecrc a,fname
mes "CRC="+a
filemd5 md5,fname
mes "MD5="+md5
stop

上のサンプルスクリプトは、ファイルのハッシュ値としてCRC32及び、
MD5を取得して表示を行ないます。
ハッシュ値とは何でしょう? これは、簡単に言うと「ファイルの内容を
数字で表わしたもの」になります。たとえば、あなたが「こんにちは」
という文字を打ち込んで保存したテキストファイルがあるとします。
このファイルからハッシュ値を求めると1597860478のような数字が
出てきます。
この数字は、「こんにちは」という内容のテキストファイルからしか
出てきません。
「こんばんは」という内容のテキストファイルからは、また別な数字が
出てきます。
つまり、ファイルの内容全体(ファイル名は関係ありません)を他と
重複しないような
数字に置き換えたものがハッシュ値になります。
これは、1597860478という数字が「こんにちは」という文字に置き換え
られるわけではありません。あくまでも、重複しない数字を求めている
だけです。
どんなに大きなファイルでも、どんなに複雑な内容でも必ず決まった
サイズの数字に置き換えられます。
そんなことできるの? と思ってしまいますが、偉い学者の先生が
長年かけて築き上げてきたもので、実用上問題ないものになっています。
では、CRC32とかMD5って暗号のような言葉はいったい何でしょう?
これは、どちらもハッシュ値ですが、CRC32は32bit…つまりHSP3が
使用できる整数値の範囲内で求めるのに対して、
MD5は128bitで32ケタの16進数文字列として取得されます。
当然、MD5の方が精度が高く重複はほぼありえないと言っていいでしょう。
ハッシュ値は、2つのファイルが同じかどうかを比べたり、
パスワードを保存する種として使われるなど、身のまわりでも
重要な技術として使われています。
すぐに使うことはないかもしれませんが、
覚えておいて損はありませんよ。

(おにたま)

投稿者 usuaji : 2006年01月17日 23:10

口臭チェッカー市場