タグ付けされた質問 「hashing」

ハッシュ関数は、任意の長さのデータを固定長のデータにマップするアルゴリズムです。ハッシュ関数によって返される値は、ハッシュ値、ハッシュコード、ハッシュ合計、チェックサム、または単にハッシュと呼ばれます。ウィキペディアから:http://en.wikipedia.org/wiki/Hash_function

11
一意性と速度に最適なハッシュアルゴリズムはどれですか?
一意性と速度に最適なハッシュアルゴリズムはどれですか?例(良い)にはハッシュ辞書が含まれます。 私はSHA-256などのようなものがあることを知っていますが、これらのアルゴリズムは安全であるように設計されています。これは通常、一意性の低いアルゴリズムよりも遅いことを意味します。衝突を避けるために、高速でありながらかなりユニークなハッシュアルゴリズムを設計したいと考えています。
1388 algorithms  hashing 

2
なぜ多くのハッシュされ暗号化された文字列が等号で終わるのですか?
私はC#とMSSQLを使用していますが、ご想像のとおり、パスワードはソルトおよびハッシュされて保存されています。 nvarchar列に格納されているハッシュを見ると(たとえば、すぐに使用できるaspnetメンバーシッププロバイダー)。生成されたSaltとHashの値が常に1つまたは2つの等号で終わるように見えるのは、常に興味がありました。 暗号化アルゴリズムを使用しているときに似たようなものを見てきましたが、これは偶然ですか、それとも理由がありますか?

8
パスワードの再利用を「保護」するために、送信する前にクライアントでパスワードをハッシュするWebページがほとんどないのはなぜですか(そしてサーバー上で再度ハッシュするのですか)。
インターネットにはログイン情報を必要とする多くのサイトがあり、パスワードの再利用を防ぐ唯一の方法は、サーバー上でパスワードがハッシュされるという「約束」です。 したがって、パスワードを再ハッシュするサーバーに送信する前に、クライアントコンピューターで(Javascriptを使用して)パスワードをハッシュするWebページを作成するのはどれくらい難しいでしょうか。理論的には、これは追加のセキュリティを提供しませんが、実際には、サーバーでパスワードをハッシュしない「不正サイト」から保護するために使用できます。


6
パスワードを複数回ハッシュする方が安全ですか?
パスワードを保存するとき、文字列を「ダブルハッシュ」することをお勧めします(たとえば、md5、sha1、両方ともソルトを使用するなど)。 最初の質問は、「これは実際に正しいのですか?」そうでない場合は、この質問の残りを無視してください:) 私が尋ねる理由は、一見すると、これが理にかなっていると言うことです。しかし、それについて考えると、ハッシュが再ハッシュされるたびに(おそらく何かが追加されて)、私が見ることができるのは、最終的な「一意性」の上限が減少していることです...初期入力。 別の言い方をしましょう。ハッシュされたときにy個の可能な文字列に削減されるx個の文字列があります。つまり、最初のセットには衝突があります。今、2番目のセットから3番目のセットに来て、同じことが発生することはできません(つまり、3番目のセットで同じハッシュになるすべての「y」文字列のセットでの衝突)? 私の頭の中では、各ハッシュ関数呼び出しの「ファンネル」、無限の可能性のセットを有限セットに「ファネル化」するなどが見えますが、明らかに各呼び出しはその前の有限セットで動作しており、入力より大きく設定しないでください。 たぶん、例は私のとりとめを説明しますか?「a」と「b」にハッシュ「1」を与え、「c」と「d」にハッシュ「2」を与える「hash_function_a」を取ります。この関数を使用してパスワードを保存すると、パスワードが「a」であっても、パスワード「b」を使用できます。 「1」と「2」にハッシュ「3」を与える「hash_function_b」を取ります。「hash_function_a」の後に「セカンダリハッシュ」として使用する場合、パスワードが「a」であっても「b」、「c」または「d」を使用できます。 それに加えて、ソルトを使用する必要がありますが、「x」入力を「less than x」出力にマッピングするたびに実際に変更されるわけではありません。私はそうは思いません。 誰かが私にここで不足していることを説明してもらえますか? ありがとう! 編集:それが価値があるため、私は自分でこれを行うのではなく、bcryptを使用します。そして、「ハッカー」にとって「サイクルを使い切る」のに役立つかどうかはあまり心配していません。私は本当に、プロセスがハッシュ衝突の観点から「セキュリティ」を低下させるかどうか疑問に思っています。
43 hashing 

3
私はハッシュテーブルを理解しようとしています-誰かがそれを私に説明できますか?
PHPでのハッシュテーブルの正しい使用と実装を理解したい(申し訳ありません)。 私はどこかで、経験の浅いプログラマーがハッシュテーブルを作成し、それを反復処理したことを読みました。今、私はなぜそれが間違っているのか理解していますが、私の理解が正しいかどうかを知るための完全な知識はまだありません(あなたが私の意味を知っているなら)。 だから誰かが私にPHPでハッシュテーブル(おそらく連想配列)を実装する方法、そしておそらくもっと重要なことには、「ハッシュで」値にアクセスする方法とそれが実際に何を意味するかを説明できますか?
25 php  hashing 

4
Gitの.git / objects /フォルダーが多くのSHAプレフィックスフォルダーに分割されているのはなぜですか?
Gitは、オブジェクト(Blob、ツリー)を.git/objects/フォルダーに内部的に保存します。各オブジェクトは、オブジェクトのコンテンツから計算されるSHA1ハッシュによって参照できます。 ただし、オブジェクトは.git/objects/フォルダ内に直接保存されません。代わりに、各オブジェクトは、SHA1ハッシュのプレフィックスで始まるフォルダー内に保存されます。そのため、ハッシュb7e23ec29af22b0b4e41da31e868d57226121c84を持つオブジェクトは次の場所に保存されます.git/objects/b7/e23ec29af22b0b4e41da31e868d57226121c84 Gitがオブジェクトストレージをこのように細分するのはなぜですか? git-scmのGitの内部のページなど、私が見つけることができるリソースは、howではなく、howだけを説明しました。

6
ハッシュアルゴリズムを「安全」にするものは何ですか?
この興味深い質問を読んだ後、必要な場合にどの安全でないハッシュアルゴリズムを使用するかについて良いアイデアがあると感じましたが、代わりに安全なアルゴリズムを使用する理由はわかりません。 それで、違いは何ですか?出力はハッシュされたものを表す単なる乱数ではありませんか?一部のハッシュアルゴリズムを安全にする理由は何ですか?
19 security  hashing 

6
近似等式を使用したフロートハッシュの実装方法
次のPythonクラスがあるとしましょう(問題はJavaにもequalsandと同じように存在しますhashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees ここでdegrees、フロートとしてのケルビンの温度です。今、私はのための平等のテストやハッシュを実装したいTemperatureという方法で、 直接等価テストではなく、イプシロンの差までフロートを比較します。 をa == b意味する契約を尊重しhash(a) == hash(b)ます。 def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? Pythonのドキュメントでは、数値をハッシュすることについて少し説明してhash(2) == hash(2.0)いますが、これはまったく同じ問題ではありません。 私は正しい軌道に乗っていますか?もしそうなら、この状況でハッシュを実装する標準的な方法は何ですか? 更新:現在、フロートのこのタイプの等価テストでは==、との推移性が排除されていることを理解していequalsます。しかし、フロートを直接比較するべきではないという「常識」とどのように結びついているのでしょうか?浮動小数点数を比較して等値演算子を実装すると、静的解析ツールが文句を言います。彼らはそうする権利がありますか?

6
ウェブサイトとパスワードが安全であることをユーザーに保証する方法[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 信頼できるWebサイトでは、「すべてのデータは暗号化されています」または「すべてのパスワードは128ビット暗号化を使用して暗号化されています」などのクレームが常に表示されます。 私のウェブサイトでは、SHA-512(ほとんどの場合)ハッシュをランダムソルトで使用した後、すべてのユーザーパスワードをデータベースに保存します。パスワードが必要であるためにWebサイトの使用を妨げないように、パスワードが安全であることをユーザーに保証するスニペットを追加します。ユーザーに安全を感じてもらいたいのですが、ハッシュとは誰もが知っているとは思いません。 私の質問:「すべてのパスワードは暗号化され安全です」というメッセージを提供しても大丈夫ですか?平均的なユーザーはハッシュと暗号化の違いを知っているとは思わないので、見ているだけで安全だと感じる可能性が高い慰めの言葉「暗号化」?または、提供する必要がある代替メッセージはありますか? ちなみに、私は暗号化とパスワードハッシュが初めてであり、サイトを立ち上げた時点でこれで十分であるかどうか疑問に思っていました。安全でない場合は安全だとユーザーに伝えたくありません。どんな情報でも大歓迎です。ありがとう。

3
スケーラブルブルームフィルターはどのように機能しますか?
スケーラブルブルームフィルターを読んでいて、構成ブルームフィルターがいっぱいになるたびに、より大きなサイズの新しいブルームフィルターが追加される方法を理解できませんでした。 最初に作成されたフィルターの設定ビットに寄与した要素は、存在を検索できません。おそらく私はこれを理解していないのでしょうか? 基本的なブルームフィルターは理解できます。ただし、動的ブルームフィルターに頭を包むことはできません。


5
パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?
パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?1つはハッシュ化され、元に戻すことはできないため、2つのパスワードはまったく異なりませんか?

3
%演算子を使用せずに、よく分散されたハッシュテーブルを実装することは可能ですか?
私は、C#で高速で十分に分散されたハッシュテーブルを実装したいと考えています。任意のハッシュコードを受け取り、それを「制約」して、バケットのインデックス作成に使用できるハッシュ制約関数の選択に問題があります。私がこれまでに見た2つのオプションがあります: 一方では、バケットに常に素数の要素があることを確認し、ハッシュを制約するには、単にバケットの数でモジュロします。実際、これは.NETの辞書が行うことです。このアプローチの問題は、%の使用が他の操作と比較して非常に遅いことです。あなたが見ればAgner霧命令テーブル、idiv(%のために生成されますアセンブリコードで)新しいIntelプロセッサのための〜25サイクルの命令のレイテンシを持っています。3の周りにこれを比較しmul、等をビット単位のオペレーションのための1 and、orまたはxor。 一方、バケットの数は常に2の累乗にすることができます。配列の外部でインデックスを作成しないようにハッシュのモジュラスを計算する必要がありますが、今回はより安価になります。2のべき乗のためのため% Nだけされ& (N - 1)、拘束のみ1~2サイクルかかるマスキング演算に低減されます。これはGoogleのsparsehashによって行われます。この欠点は、ユーザーに適切なハッシュを提供することを期待していることです。ハッシュをマスクすると、基本的にハッシュの一部が切り捨てられるため、ハッシュのすべてのビットを考慮しなくなります。ユーザーのハッシュが不均等に分散している場合、たとえば上位ビットのみが埋められるか、下位ビットが常に同じである場合、このアプローチの衝突率ははるかに高くなります。 私は、両方の長所を備えた使用可能なアルゴリズムを探しています。ハッシュのすべてのビットを考慮し、%を使用するよりも高速です。必ずしもモジュラスである必要はなく、範囲内0..N-1(Nはバケットの長さ)にあることが保証されているだけで、すべてのスロットに均等に分布しています。そのようなアルゴリズムは存在しますか? 助けてくれてありがとう。

2
個別の連鎖にバイナリ検索ツリーを使用してハッシュテーブルを高速化することは可能ですか?
バイナリ検索ツリーを使用してハッシュテーブルを実装し、O(n)(リンクリストを使用)からO(log n)(BSTを使用)への個別チェーンプロセスの検索の複雑さを軽減します。これを行うことはできますか?ソリューションが段階的なロジックの実装であれば、理解しやすくなります。 ハッシュテーブル(個別のチェーンを使用してビルド)の検索時間を短縮したいのですが、同時に挿入時間を増やしたくありません。私のプロジェクトでは、ハッシュ関数を変更して衝突を減らすことはできません。しかし、スケーラビリティのために、衝突が発生しています。私は回避策を見つけようとしていますので、衝突が発生した場合に何らかの方法で最高のアクセスと時間を挿入できるようにしています...つまり、アルゴリズム全体を再構築するよりも物の現在の状態を管理します。パンアウトしない場合は、再構築する必要があります。アイデアはありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.