1. ホーム
  2. encryption

[解決済み] 短いハッシュを生成するハッシュ関数?

2022-07-02 07:05:20

質問

任意の長さの文字列を受け取り、10文字以下のハッシュを生成できる暗号化の方法はありますか?私は合理的にユニークな ID を生成したいのですが、ランダムにではなく、メッセージ コンテンツに基づいています。

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

どのように解決するのですか?

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

例えば、Pythonでは

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