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

ハッシュ関数は、大量のデータを小さなデータ(通常は単一の整数)に変換する明確に定義された手順または数学関数です。ソーシャルメディアのコンテンツにラベルを付けるために使用されるハッシュタグに関する質問については、ハッシュタグを使用してください。URLとHTMLアンカーに関する質問については、フラグメント識別子を使用してください。Rubyのハッシュタイプに関する質問については、ruby-hashを使用してください。

2
ReSharper GetHashCodeオーバーライドに「397」が使用されるのはなぜですか?
多くの皆さんと同様に、私はReSharperを使用して開発プロセスをスピードアップしています。これを使用してクラスの等価メンバーをオーバーライドすると、GetHashCode()に対して生成されるコード生成は次のようになります。 public override int GetHashCode() { unchecked { int result = (Key != null ? Key.GetHashCode() : 0); result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0); result = (result * 397) ^ ObjectId; return result; } } もちろん自分のメンバーもいますが、なぜ397なのか知りたいのですが? 編集:つまり、私の質問は、397の素数が素数であること以外に「特別な」何かがあるので、より適切に表現されますか?

20
JavaScriptにはなんらかのハッシュコード関数がありますか?
基本的に、私はユニークなオブジェクトのセットであるオブジェクトを作成しようとしています。私は、JavaScriptオブジェクトをプロパティ名のオブジェクトと共に使用するという素晴らしいアイデアを思いつきました。といった、 set[obj] = true; これはある程度まで機能します。文字列と数値でうまく機能しますが、他のオブジェクトでは、すべて同じ値に「ハッシュ」して同じプロパティにアクセスするようです。オブジェクトに一意のハッシュ値を生成する方法はありますか?文字列と数値はどのように機能しますか?同じ動作を上書きできますか?
150 javascript  hash  set  hashcode 

7
SHA-1はパスワードの保存に対して安全ですか?
結論: SHA-1は、プリイメージ攻撃に対して何よりも安全ですが、計算は簡単です。つまり、ブルートフォース攻撃や辞書攻撃を実装する方が簡単です。(SHA-256などの後継者についても同じことが言えます。)状況によっては、(bcryptなどの)計算コストが高くなるように設計されたハッシュ関数の方が適している場合があります。 「SHA-1が壊れている」という発言を頻繁に投げかける人もいるので、それが何を意味するのかを理解しようとしています。SHA-1パスワードハッシュのデータベースがあり、攻撃者が最先端のSHA-1破壊アルゴリズムと100,000台のマシンを備えたボットネットにアクセスするとします。(10万台の家庭用コンピューターを制御できるということは、1秒あたり約10 ^ 15の操作ができることを意味します。) 一人のユーザーのパスワードを見つけますか? 与えられたユーザーのパスワードを見つけますか? すべてのユーザーのパスワードを調べますか? ユーザーの1人としてログインする方法を見つけますか? 特定のユーザーとしてログインする方法を見つけますか? パスワードがソルトされている場合、どのように変化しますか?ソルティングの方法(プレフィックス、ポストフィックス、その両方、またはxor-ingのようなより複雑なもの)は重要ですか? これは、ググリングした後の私の現在の理解です。誤解した場合は正解してください。 ソルトがない場合、レインボー攻撃はすべてのパスワード(非常に長いパスワードを除く)をすぐに見つけます。 十分に長いランダムソルトがある場合、パスワードを見つける最も効果的な方法は、ブルートフォースまたは辞書攻撃です。衝突攻撃やプリイメージ攻撃は実際のパスワードを見つけるのに役立ちません。そのため、SHA-1に対する暗号攻撃はここでは役に立ちません。どのアルゴリズムを使用するかは問題ではありません。MD5またはMD4を使用することもでき、パスワードも同じように安全です(SHA-1ハッシュの計算が遅いため、わずかな違いがあります)。 「同じくらい安全」であるかどうかを評価するために、1回のsha1の実行に1000の操作が必要で、パスワードに大文字、小文字、数字(つまり、60文字)が含まれていると仮定します。つまり、攻撃者は1 日に 10 15 * 60 * 60 * 24/1000〜= 10 17個の潜在的なパスワードをテストできるということです。ブルートフォース攻撃の場合、これはすべてのパスワードを3時間で最大9文字、1週間で最大10文字、1年で最大11文字までテストすることを意味します。(1文字追加するごとに60倍かかります。)辞書攻撃ははるかに速く(1台のコンピューターを使用している攻撃者でも数時間で攻撃を阻止できます)、弱いパスワードしか見つかりません。 ユーザーとしてログインするために、攻撃者は正確なパスワードを見つける必要はありません。同じハッシュになる文字列を見つけるだけで十分です。これは最初のプリイメージ攻撃と呼ばれます。私の知る限り、SHA-1に対するプリイメージ攻撃はありません。(ブルートフォース攻撃は2 160回の操作が必要です。つまり、理論上の攻撃者がそれを阻止するには10〜30年必要です。理論的な可能性の限界は約2 60回の操作で、攻撃には数年かかります。)プリイメージ攻撃があります。影響がごくわずかなSHA-1の削減バージョンに対して(80ではなく44ステップを使用する削減SHA-1の場合、攻撃時間は2 160オペレーションから2 157に減少)。SHA-1に対する衝突攻撃がありますが、理論的な可能性の範囲内です(私が見つけた最善の方法は、時間を2 80から2 52に減らします)が、ソルトがなくても、パスワードハッシュに対しては役に立ちません。 つまり、SHA-1でパスワードを保存することは完全に安全に思えます。私は何か見落としてますか? 更新: Marceloは、2 106操作での2番目のプリイメージ攻撃について言及している記事を指摘しました。(編集:として、トーマスは説明して、この攻撃は現実のシナリオには適用されません仮想的な構造です。)私はまだかかわらず、鍵導出関数としてSHA-1を使用するためにどのようにこの呪文の危険性が表示されません。衝突攻撃または2番目のプリイメージ攻撃が最終的に1番目のプリイメージ攻撃に変わる可能性があると考えるのに、一般的に十分な理由はありますか?
148 cryptography  hash  sha1 


4
ベストプラクティス:パスワードをソルトアンドペパーリングしますか?
私が行っていることは、実際にはパスワードをソルト処理するのではなく、それらをペパーリングすることであることがわかったディスカッションに出会い、それ以来、次のような関数で両方を実行し始めました。 hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 選択したハッシュアルゴリズムを無視します(これはソルト&ペッパーの説明であり、特定のアルゴリズムではありませんが、安全なアルゴリズムを使用しています)、これは安全なオプションですか、それとも何か別のことをする必要がありますか?用語に不慣れな方のために: 塩は、通常、それが不可能なパスワードをクラックするハッシュテーブルを使用するようにするために設計されたデータベース内の文字列を格納し、ランダムに生成された値です。各パスワードには独自のソルトがあるため、パスワードを解読するためにすべて個別にブルートフォースする必要があります。ただし、ソルトはパスワードハッシュとともにデータベースに格納されるため、データベースのセキュリティが侵害されると、両方が失われます。 唐辛子は秘密であることが意図されている(通常は、アプリケーションのソースコードにハードコードされた)データベースとは別に格納されているサイト全体の静的な値です。これは、データベースが侵害されてもアプリケーション全体のパスワードテーブルがブルートフォース可能にならないようにするために使用されます。 不足しているものはありますか?ユーザーのセキュリティを保護するために、パスワードをソルト&ペッパーリングするのが最良のオプションですか?この方法で行うことには、潜在的なセキュリティ上の欠陥はありますか? 注:説明のために、アプリケーションとデータベースは別々のマシンに格納されていると仮定します。パスワードは共有しないでください。したがって、データベースサーバーの違反が、アプリケーションサーバーの違反を自動的に意味するわけではありません。

9
XORがハッシュを結合するデフォルトの方法であるのはなぜですか?
2つのハッシュがH(A)ありH(B)、それらを結合したいとします。私は、2つのハッシュを組み合わせるための良い方法はXORそれらにあることを読んだ、例えばXOR( H(A), H(B) )。 私が見つけた最良の説明は、これらのハッシュ関数ガイドラインについてここで簡単に触れられています: ほぼランダムな分布で2つの数値をXORすると、ほぼランダムな分布*を持つ別の数値になりますが、これは2つの値に依存します。 ... *組み合わせる2つの数値の各ビットで、2つのビットが等しい場合は0が出力され、それ以外の場合は1が出力されます。つまり、組み合わせの50%では1が出力されます。したがって、2つの入力ビットがそれぞれ約50〜50の確率で0または1になる可能性がある場合、出力ビットも同様です。 XORが(ORやANDなどではなく)ハッシュ関数を組み合わせるためのデフォルトの演算である必要がある理由の直観や数学について説明できますか?

6
Sha256で文字列をハッシュする
SHA256を使用して文字列をハッシュしようとします。次のコードを使用しています。 using System; using System.Security.Cryptography; using System.Text; public class Hash { public static string getHashSha256(string text) { byte[] bytes = Encoding.Unicode.GetBytes(text); SHA256Managed hashstring = new SHA256Managed(); byte[] hash = hashstring.ComputeHash(bytes); string hashString = string.Empty; foreach (byte x in hash) { hashString += String.Format("{0:x2}", x); } return hashString; } } ただし、このコードは、友人のphpやオンラインジェネレーター(Thisジェネレーターなど)と比較して、大幅に異なる結果をもたらします。 …
141 c#  string  hash  sha256 

9
パスワードのハッシュと暗号化の違い
この質問に現在投票されているトップは次のように述べています: セキュリティ関連ではありますが、それほどセキュリティの問題ではないもう1つの問題は完全であり、パスワードのハッシュと暗号化の違いを理解するのに失敗しています。最も一般的に見られるのは、プログラマーが安全でない「パスワードを思い出させる」機能を提供しようとしているコードです。 この違いは正確には何ですか?ハッシュは暗号化の一種だといつも思っていました。投稿者が言及している危険な機能とは何ですか?


9
MD5はまだファイルを一意に識別するのに十分ですか?
MD5アルゴリズムの破壊やセキュリティの問題などを考慮すると、MD5ハッシュはファイルを一意に識別するのに十分な方法と見なされていますか?ここでのセキュリティは私の主な関心事ではありませんが、各ファイルを一意に識別することが重要です。 何かご意見は?
139 hash  md5 

9
どの暗号ハッシュ関数を選択すればよいですか?
.NETフレームワークには、6つの異なるハッシュアルゴリズムが付属しています。 MD5:16バイト(ハッシュにかかる時間500MB:1462ミリ秒) SHA-1:20バイト(1644ミリ秒) SHA256:32バイト(5618ミリ秒) SHA3​​84:48バイト(3839ミリ秒) SHA512:64バイト(3820ミリ秒) RIPEMD:20バイト(7066 ms) これらの機能はそれぞれ異なる方法で実行されます。MD5が最も速く、RIPEMDが最も遅い。 MD5には、組み込みのGuidタイプに適合するという利点があります。そして、それはタイプ3 UUIDの基礎です。SHA-1ハッシュはタイプ5 UUIDの基礎です。これにより、識別に非常に使いやすくなります。 ただし、MD5は衝突攻撃に対して脆弱です。SHA-1も脆弱ですが、程度は低くなります。 どのハッシュアルゴリズムをどの条件で使用すればよいですか? 私が答えを見て本当に興味がある特定の質問は次のとおりです。 MD5は信頼されないのですか?悪意のない意図でMD5アルゴリズムを使用し、第三者が悪意のある意図を持たない通常の状況では、すべての衝突が予想されます(2つの任意のバイト[]が同じハッシュを生成することを意味します) RIPEMDはSHA1よりどのくらい優れていますか?(より良い場合)計算が5倍遅くなりますが、ハッシュサイズはSHA1と同じです。 ファイル名(または他の短い文字列)をハッシュするときに、悪意のない衝突が発生する確率はどれくらいですか?(例:同じMD5ハッシュを持つ2つのランダムなファイル名)(MD5 / SHA1 / SHA2xxを使用)一般に、悪意のない衝突の確率はどれくらいですか? これは私が使用したベンチマークです: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); } …

6
URLハッシュの場所を取得し、jQueryで使用する
現在のページのURLのハッシュの後に値を取得し、これを新しい関数に適用できるようにしたい...例 URLは www.example.com/index.html#foo そして、これを次のコードと組み合わせて使用​​したいと思います $('ul#foo:first').show(); これを取得し、変数に変換して2番目のコードで使用できるようにする方法があることを前提としています。


11
クライアント側でパスワードをハッシュする価値はありますか
ログインシステムを導入するときは、常に、指定されたパスワードのMD5をサーバー側のユーザーテーブルの値と比較します。 しかし、私の友人は、「クリアな」パスワードがネットワークソフトウェアによって盗聴される可能性があると私に言った。 だから私の質問は:クライアント側でパスワードをハッシュするのは良い考えですか?サーバー側でハッシュするよりも良いですか?


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