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

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

11
コンパイル時の文字列ハッシュ
C ++ 11の新しい文字列リテラルを使用すると、コンパイル時に文字列のハッシュを計算できる可能性があることをいくつかの場所で読んだことがあります。しかし、誰も出てきて、それが可能であるか、どのように行われるかを言う準備ができていないようです。 これは可能ですか? オペレーターはどのように見えますか? このようなユースケースに特に興味があります。 void foo( const std::string& value ) { switch( std::hash(value) ) { case "one"_hash: one(); break; case "two"_hash: two(); break; /*many more cases*/ default: other(); break; } } 注:コンパイル時のハッシュ関数は、私が書いたとおりに見える必要はありません。最終的なソリューションがどのようになるかを推測するために最善を尽くしましたmeta_hash<"string"_meta>::valueが、実行可能なソリューションになる可能性もあります。

1
OAuthトークンの生成に関するベストプラクティスは?
私がいることを実感OAuthの仕様は、特にトークン(ConsumerKey、ConsumerSecret、AccessToken、RequestToken、TokenSecret、または検証用コードの起源については何も指定しませんが、非常に安全なトークンを作成するための任意のベストプラクティスがある場合、私は好奇心が強いです/秘密の組み合わせ)。 私が見るように、トークンを作成するにはいくつかのアプローチがあります: ランダムなバイトを使用し、コンシューマー/ユーザーに関連付けられたDBに保存します 一部のユーザー/コンシューマー固有のデータをハッシュし、コンシューマー/ユーザーに関連付けられたDBに保存します ユーザー/消費者固有のデータを暗号化する (1)の利点は、データベースが最も安全と思われる唯一の情報源であることです。(2)や(3)よりも攻撃を行うのは難しいでしょう。 実際のデータ(2)をハッシュすると、おそらく既知のデータからトークンを再生成できます。とにかく保存/検索する必要があるので、(1)には実際には何の利点も提供しない可能性があります。(1)よりもCPUに負荷がかかります。 実際のデータを暗号化すると(3)、暗号化を解除して情報を知ることができます。これは、(1)と(2)よりも必要なストレージが少なく、検索数が少ない可能性がありますが、安全性も低くなる可能性があります。 考慮すべき他のアプローチ/利点/欠点はありますか? 編集:別の考慮事項は、トークンに何らかのランダムな値が存在する必要があることです。これは、新しいトークンを期限切れにして再発行する機能が存在する必要があるため、実際のデータのみで構成されてはならないためです。 続く質問: 暗号的に非常に安全にするための最小トークン長はありますか?私が理解しているように、トークンシークレットが長いほど、より安全な署名が作成されます。この理解は正しいですか? ハッシュの観点から、特定のエンコーディングを別のエンコーディングよりも使用する利点はありますか?たとえば、16進エンコーディング(GUID文字列など)を使用する多くのAPIが表示されます。OAuth署名アルゴリズムでは、トークンは文字列として使用されます。16進文字列を使用すると、Base64エンコーディングを使用する場合よりも、使用可能な文字セットがはるかに小さくなります(予測可能になります)。同じ長さの2つの文字列の場合、文字セットが大きい文字列ほど、ハッシュ分布が広くなります。これにより、セキュリティが向上すると思われます。この仮定は正しいですか? OAuth仕様では、この問題が11.10 Entropy of Secretsで発生しています。


11
php mysqli_connect:クライアントに不明な認証方法[caching_sha2_password]
mysqli_connectMySQLデータベースへのログインにphpを使用しています(すべてローカルホスト上) <?php //DEFINE ('DB_USER', 'user2'); //DEFINE ('DB_PASSWORD', 'pass2'); DEFINE ('DB_USER', 'user1'); DEFINE ('DB_PASSWORD', 'pass1'); DEFINE ('DB_HOST', '127.0.0.1'); DEFINE ('DB_NAME', 'dbname'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if(!$dbc){ die('error connecting to database'); } ?> これはmysql.userテーブルです: MySQLサーバーのiniファイル: [mysqld] # The default authentication plugin to be used when connecting to the server default_authentication_plugin=caching_sha2_password …
100 php  mysql  hash  sha 

1
ハッシュロケットは廃止されましたか?
よく引用されているRIPハッシュロケットポストは、Hash Rocket構文(:foo => "bar")が非RubyのJSONスタイルのハッシュ(foo: "bar")のために廃止されることを示唆しているようですが、ハッシュロケットフォームを示す明確なリファレンスは見つかりませんRuby 1.9の時点で実際には非推奨/非推奨です。

10
ハッシュのためにソルトを隠す必要性
職場では、塩に関して2つの競合する理論があります。私が取り組んでいる製品は、ユーザー名や電話番号などを使用してハッシュをソルトします。基本的にユーザーごとに異なりますが、すぐに利用できます。他の製品はユーザーごとにランダムにソルトを生成し、ユーザーがパスワードを変更するたびに変更されます。ソルトはデータベースで暗号化されます。 私の質問は、2番目のアプローチが本当に必要かどうかです。純粋に理論的な観点からは、最初のアプローチよりも安全であることは理解できますが、実用性の観点からはどうでしょうか。現在、ユーザーを認証するには、ソルトを暗号化せずにログイン情報に適用する必要があります。 それについて考えた後、私はこのアプローチから実際のセキュリティの向上を見ることはありません。アカウントごとにソルトを変更すると、攻撃者が各アカウントのハッシュをすばやく特定する方法を知っていたとしても、ハッシュアルゴリズムをブルートフォースにしようとする試みが非常に困難になります。これは、パスワードが十分に強力であることを前提としています。(明らかに、すべてが2桁のパスワードのセットの正しいハッシュを見つけることは、8桁のパスワードの正しいハッシュを見つけるよりもはるかに簡単です)。私の論理が間違っていますか、それとも私が見逃しているものはありますか? 編集:わかりましたので、ここで、ソルトを暗号化するのは本当に難しいと思う理由です。(私が正しい軌道に乗っているかどうかはわかります)。 以下の説明では、パスワードは常に8文字、saltは5文字で、すべてのパスワードが小文字で構成されていると仮定します(計算を簡単にするためです)。 エントリごとに異なるソルトがあると、同じレインボーテーブルを使用できません(実際には、十分なサイズの1つがあれば実際には技術的に使用できますが、今のところは無視します)。これは私が理解していることから、ソルトの本当の鍵です。すべてのアカウントをクラックするには、それぞれについて話すために、車輪を再発明する必要があるためです。ハッシュを生成するために正しいソルトをパスワードに適用する方法を知っている場合、ソルトはハッシュされたフレーズの長さ/複雑さを実際に拡張するだけなので、そうします。したがって、ソルトとは何かを知っているので、パスワードとソルトを "知っている"ために生成する必要がある組み合わせの数を13 ^ 26から8 ^ 26に削減します。今ではそれが簡単になりますが、それでも本当に難しいです。 ソルトの暗号化に移ります。ソルトが暗号化されていることがわかっている場合は、最初にそれを解読しようとはしません(十分なレベルの暗号化があることを前提として)。無視します。それを解読する方法を理解する代わりに、前の例に戻って、13 ^ 26のすべてのキーを含むより大きなレインボーテーブルを生成します。ソルトを知らないと間違いなく私は遅くなりますが、ソルトの暗号化を最初に解読しようとするという記念すべき仕事が増えるとは思いません。だからそれだけの価値はないと思います。考え? 以下は、ブルートフォース攻撃を受けた場合のパスワードの保持期間を説明するリンクです。http: //www.lockdown.co.uk/?pg = combi

2
ユーザーパスワードのクレンジング
ユーザー提供のパスワードをハッシュしてデータベースに保存する前に、どのようにエスケープまたはクレンジングする必要がありますか? PHP開発者がセキュリティ上の目的でユーザーのパスワードをハッシュすることを検討するとき、開発者は多くの場合、他のユーザー提供のデータと同じようにそれらのパスワードを考える傾向があります。この問題は、パスワードの保存に関連するPHPの質問でよく出てきます。開発者は多くの場合のような機能を使用してパスワードを清めるために望んでいるescape_string()(様々な繰り返しで)、 、htmlspecialchars()、addslashes()それをハッシュし、それをデータベースに格納する前に他の人。
98 php  sql  pdo  hash 

6
Pythonでのファイルのハッシュ
PythonがEOFを読み取れるようにして、sha1とmd5のどちらであっても、適切なハッシュを取得できるようにします。助けてください。ここに私がこれまでに持っているものがあります: import hashlib inputFile = raw_input("Enter the name of the file:") openedFile = open(inputFile) readFile = openedFile.read() md5Hash = hashlib.md5(readFile) md5Hashed = md5Hash.hexdigest() sha1Hash = hashlib.sha1(readFile) sha1Hashed = sha1Hash.hexdigest() print "File Name: %s" % inputFile print "MD5: %r" % md5Hashed print "SHA1: %r" % sha1Hashed
98 python  hash  md5  sha1  hashlib 

11
Laravelハッシュパスワードを作成する方法
Laravelのハッシュパスワードを作成しようとしています。Laravelハッシュヘルパーを使用するように言われましたが、見つからないか、間違った方向を向いています。 Laravelハッシュパスワードを作成するにはどうすればよいですか?そして、どこ? 編集:コードが何であるかは知っていますが、どこでどのように使用するかわからないため、ハッシュ化されたパスワードが返されます。ハッシュ化されたパスワードを取得したら、手動でデータベースに挿入できます

1
tuple(set([1、“ a”、“ b”、“ c”、“ z”、“ f”]))== tuple(set([“ a”、“ b”、“ c”、 「z」、「f」、1]))ハッシュのランダム化が有効な場合、85%の時間ですか。
ゼロピレウスの別の質問への回答を考えると、 x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a", "b", "c", "z", "f", 1])) print(x == y) プリント Trueと時間の85%程度のハッシュのランダム化が有効になって。なぜ85%ですか?

8
Pythonでパスワードをソルトしてハッシュする
このコードは、パスワードをソルトでハッシュすることになっています。ソルトとハッシュ化されたパスワードはデータベースに保存されています。パスワード自体はそうではありません。 操作のデリケートな性質を考慮して、私はすべてがコーシャであることを確認したかった。 import hashlib import base64 import uuid password = 'test_password' salt = base64.urlsafe_b64encode(uuid.uuid4().bytes) t_sha = hashlib.sha512() t_sha.update(password+salt) hashed_password = base64.urlsafe_b64encode(t_sha.digest())

3
Python 3.3のハッシュ関数がセッション間で異なる結果を返す
私はPython 3.3にBloomFilterを実装し、セッションごとに異なる結果を得ました。この奇妙な動作をドリルダウンすると、内部のhash()関数にたどり着きました。この関数は、セッションごとに同じ文字列に対して異なるハッシュ値を返します。 例: >>> hash("235") -310569535015251310 -----新しいpythonコンソールを開く----- >>> hash("235") -1900164331622581997 なぜこうなった?なぜこれが便利なのですか?




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