ハッシュ関数のイメージを掴むために、簡単な例を考えてみる。
まず、任意の文字列が与えられたとき、文字列中の全ての文字コードを加えた値を返す関数を考える。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | # hash_0.py # 任意の文字列のhashを返す関数。 # 文字列中の文字コードを単純に足し込んでいく def make_hash(str):     buffer = 0     char_list = list(str)     # すべての文字のコードを加える     for c in char_list:         buffer += ord(c)     # 加えた結果を16進文字列にして返す     return(format(buffer, 'X')) | 
この関数を以下のような文字列で実行すると、1文字加えたり入れ替えただけで結果が違ってくるのがわかる。
| 1 2 3 | print(make_hash("America"))  # 2B2 print(make_hash("American")) # 320 print(make_hash("america"))  # 2D2 | 
長い文字列で試してみると、1文字入れ替えると値が変わってくるが、1文字分の足し込むコードが変わるだけなので、大きな変化は期待できない。
| 1 2 | print(make_hash("The rain in Spain stays mainly in the plain.")) # FB5 print(make_hash("The rain in spain stays mainly in the plain.")) # FD5 | 
この方法で致命的なのは、同種の文字を順序違いで並べても結果が同じになる点。
| 1 2 | print(make_hash("AB")) # 83 print(make_hash("BA")) # 83 | 
このやり方は、あまりに単純すぎて使えない。