長年、ハッシュのスペルを勘違いしていました。ずっとhushだと思っていました。もちろんhushという語もありますが、ITのハッシュはhashだったんですね。
「ハッシュパピー」というブランドは有名だと思いますが、私がhushを知ったのは、音楽からでした。
「Deep Purple」のファーストアルバムにHushという曲があり、知りました。こちらはスポティファイへの曲リンクです。この曲はDeep Purpleのオリジナルではなく、カバーです。
「Kula Shaker」もカバーし、ヒットしました。
曲名ではないですが、歌詞の中でひたすらhushを繰り返すこの曲も好きでした。「Kajagoogoo」の「Too Shy」。(今聴いてもイイ!)
東北地方で使われる「はやす」という言葉を知っていますか。この語源は「生やす」だと言われています。野菜や果物を「切る」という意味なのですが、切るは忌み言葉なので、逆の「生やす」を使いました。hashがはやすの語源ではありません。
ハッシュ関数をhとすると、hはあるデータxを与えたとき、0<=h(x)<Mの範囲のなるべく一様に分布する整数に変換します。変換した値をハッシュ値といいます。ハッシュ関数に異なる値を与えたのに、同じ値が返ってきてしまうことを衝突といいます。
ブロックチェーンで使われるハッシュ値のような、同じ長さの文字列を返すものでは当初はなかったのですね。衝突しないように研究されていき、暗号化技術に取り込まれていったのではないでしょうか。
# -*- coding: utf-8 -*-
def hash(x):
if x == '':
return ''
M = 101
CHAR_BIT = 8
h = 0
for c in x:
h = ((h << CHAR_BIT) + ord(c)) % M
return h
if __name__ == '__main__':
print('半角英数文字列を入力してください: ') #文字化けすみません
s = input()
print(hash(s))
以上