2012-03-01 16 views
0

今後の「過去1時間以内」のハッシュと一致するハッシュ文字列を計算する必要があります。時間間隔をハッシュする方法は?

は私が間違っていた:

now = datetime.now() 
hash = now.strftime("%D %H") 

を私が言う4時55分で午前ので、もしそれが単に「時間」は、最大で5分以内に、分を切り捨てます。

ハッシュ文字列のコンシューマは、ハッシュが過去1時間以内に計算されたかどうかを知る必要があるため、過去の時間はハッシュの一部である必要があります。

+1

なぜこれはハッシュ文字列である必要がありますか?なぜ、 'datetime'オブジェクトを保存して比較するのはなぜですか? – katrielalex

+0

私はあなたが[この他の質問]好きかもしれないと思う(http://stackoverflow.com/questions/9043172/hash-a-range-of-values) – inspectorG4dget

+0

@katrielalex、私はそれが構築された場合にのみ有効なトークンを持っている過去1時間以内にトークンと一緒にdatetimeオブジェクトを提供すると、攻撃者はハッシュアルゴリズムをより簡単に理解することができます。 – TheOne

答えて

0

mgibsonbrの提案に似ている単純な近似解は、現在の時間で新しいトークンを生成し、それが失敗した場合は過去の時間で再度チェックすることです。

1

私はそれはまったく可能ではないと思います。 4:15、4:55、5:30の値をX、Y、Zのハッシュで取ります。4:55は4:55と5:30の過去1時間以内であるため、YはZと等しくなければなりませんしかし、4:15の過去の時間は4時55分であるが、5時30分ではないので、XはYと同じでZと異なる必要があります。

katrielalexが推奨するように、あなたの小切手でそれを使用しています。

更新:は、私はあなたが、あなたは、私たちは誰のように、より良いあなたを助けることができ、ニーズのより多くの詳細を提供するかもしれない場合は...ない素早くアクセスするためのハッシュテーブルで物事を格納するために、暗号化のためのハッシュをしたいmisundestoodようです

1時間に数分でなくても数秒ですらないので、原則として最初の時刻をハッシュすることができます(最も近い分に切り捨てられます)。 /秒)、ハッシュがまだ有効かどうかを確認するには、現在の時刻をとり、その前に毎分のハッシュをチェックします。ナイーブな解決策ですが、より良いものの出発点になることがあります。

関連する問題