任意の長さの文字列を取得して 10 文字未満のハッシュを生成できる暗号化の方法はありますか? ランダムではなく、メッセージの内容に基づいて、適度に一意の ID を生成したいと考えています。
ただし、任意の長さの文字列が不可能な場合は、メッセージを整数値に制限してもかまいません。ただし、その場合、連続する 2 つの整数のハッシュは類似してはなりません。
ベストアンサー1
一般的に利用可能なハッシュ アルゴリズム (例: SHA-1) を使用すると、必要な長さよりも少し長い結果が得られます。結果を必要な長さに切り捨てるだけで十分です。
たとえば、Python では次のようになります。
>>> import hashlib
>>> hash = hashlib.sha1("my message".encode("UTF-8")).hexdigest()
>>> hash
'104ab42f1193c336aa2cf08a2c946d5c6fd0fcdb'
>>> hash[:10]
'104ab42f11'