私は次の関数を使用して一意のレコードIDを作成しようとしています:pepper
がこのように設定されて hashlib.sha256を使用して一意のIDを作成する。ユニークであることが保証されていますか?
import hashlib
from base64 import b64encode
def make_uid(salt, pepper, key):
s = b64encode(salt)
p = b64encode(pepper)
k = b64encode(key)
return hashlib.sha256(s + p + k).hexdigest()
:
uuid_pepper = uuid.uuid4()
pepper = str(uuid_pepper).encode('ascii')
そしてsalt
とkey
は、リクエストごとに同じ値です。
私の質問は、ペッパーのユニークな性質のため、このインパクトのmake_uid
は常にユニークな値を返しますか、それとも重複を作成する可能性がありますか?
suggested answerは、さまざまなuuidタイプの一意性について尋ねているわけではないので、私はsha256ハッシュが2つの異なる入力間で衝突を作成することが可能かどうか疑問だからです。
[いつPythonでuuid.uuid1()とuuid.uuid4()を使用する必要がありますか?](http://stackoverflow.com/questions/1785503/when-should-i-use-uuid- – m0nhawk
@ m0nhawk-私はuuid1またはuuid4を使用すべきかどうか尋ねていませんが、私のhexdigestがこのインスタンスで常に一意であるかどうか尋ねています。 – mwkrimson
あなたがリンクに行き、読んだら、受け入れられた答え**あなたの質問にも**答えを見つけるでしょう。 – m0nhawk