この「_time_independent_equals」とは何を意味するのでしょうか?

StackOverflow https://stackoverflow.com/questions/3027286

  •  26-09-2019
  •  | 
  •  

質問

の中に 竜巻.webモジュールという関数があります _time_independent_equals:

def _time_independent_equals(a, b):
    if len(a) != len(b):
        return False
    result = 0
    for x, y in zip(a, b):
        result |= ord(x) ^ ord(y)
    return result == 0

これは、安全な Cookie 署名、つまり名前を比較するために使用されます。

しかし、この機能の実装に関しては、単に複雑な言い方をしているだけなのでしょうか? a==b?

役に立ちましたか?

解決

この関数は、単に文字列を比較しない、それが常に実行に同じ時間を取るしようとします。

このパスワードを比較するようなセキュリティタスクのために有用です。関数は、最初の不一致バイトで返された場合、攻撃者は、すべての可能な最初のバイトをしようとすると、最長かかる1が一致していることを知っている可能性があります。その後、彼らはすべての可能な第二のバイトをしようとすると、最長かかる1が一致していることを知っている可能性があります。文字列全体が推定されるまでこれを繰り返すことができます。 (実際には、ネットワーク内のランダムな遅延を克服するために、平均の多くをしなければならない、しかし、あなたは患者であれば、それは動作します。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top