短いハッシュを生成するハッシュ関数?質問する

短いハッシュを生成するハッシュ関数?質問する

任意の長さの文字列を取得して 10 文字未満のハッシュを生成できる暗号化の方法はありますか? ランダムではなく、メッセージの内容に基づいて、適度に一意の ID を生成したいと考えています。

ただし、任意の長さの文字列が不可能な場合は、メッセージを整数値に制限してもかまいません。ただし、その場合、連続する 2 つの整数のハッシュは類似してはなりません。

ベストアンサー1

一般的に利用可能なハッシュ アルゴリズム (例: SHA-1) を使用すると、必要な長さよりも少し長い結果が得られます。結果を必要な長さに切り捨てるだけで十分です。

たとえば、Python では次のようになります。

>>> import hashlib
>>> hash = hashlib.sha1("my message".encode("UTF-8")).hexdigest()
>>> hash
'104ab42f1193c336aa2cf08a2c946d5c6fd0fcdb'
>>> hash[:10]
'104ab42f11'

おすすめ記事