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

SHA-1は、米国政府によって連邦情報処理標準として設計された暗号化ハッシュ関数です。最近、衝突が検出されました。これは、SHA1が攻撃に対してより脆弱になっていることを意味し、データを保護するために使用することはお勧めしません。

9
Gitでのハッシュ衝突
gitの使用中にハッシュの衝突があった場合、実際にはどうなりますか? たとえば、同じsha1チェックサムで2つのファイルをコミットできた場合、gitがそれに気づくか、ファイルの1つを破損しますか? それに合わせてgitを改善できますか、それとも新しいハッシュアルゴリズムに変更する必要がありますか? (それがどれほどありそうもないことについて議論することによってこの質問をそらさないでください-ありがとう)
175 git  hash  sha1  hash-collision 



12
SHA1へのJava文字列
私はJavaで単純な文字列からSHA1へのコンバーターを作成しようとしていますが、これは私が得たものです... public static String toSHA1(byte[] convertme) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-1"); } catch(NoSuchAlgorithmException e) { e.printStackTrace(); } return new String(md.digest(convertme)); } それを渡すとtoSHA1("password".getBytes())、[�a�ɹ??�%l�3~��.おそらくUTF-8のような単純なエンコードの修正であることがわかりますが、誰かが私が欲しいものを取得するために何をすべきか教えてもらえ5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8ますか?それとも私はこれを完全に間違っていますか?
158 java  string  sha1 

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 

12
GitなしでGit SHA1をファイルに割り当てる方法は?
私が理解しているように、GitがSHA1ハッシュをファイルに割り当てるとき、このSHA1はその内容に基づいてファイルに固有です。 その結果、ファイルがあるリポジトリから別のリポジトリに移動した場合、ファイルのSHA1は、その内容が変更されていないので同じままです。 GitはSHA1ダイジェストをどのように計算しますか?それは完全な非圧縮ファイルの内容でそれをしますか? Gitの外部でSHA1を割り当てることをエミュレートしたいと思います。
138 git  sha1 


11
SHA1 vs md5 vs SHA256:PHPログインに使用するものは?
私はphpログインを作成しています。別のstackoverflow記事で説明したSHA1またはMd5、またはSHA256を使用するかどうかを決定しようとしています。それらのどれかが他のものより安全ですか?SHA1 / 256の場合、引き続きソルトを使用しますか? また、これはパスワードをハッシュとしてmysqlに保存する安全な方法ですか? function createSalt() { $string = md5(uniqid(rand(), true)); return substr($string, 0, 3); } $salt = createSalt(); $hash = sha1($salt . $hash);
133 php  login  md5  sha1  sha256 

5
gitはファイルハッシュをどのように計算しますか?
(によって返されるツリーオブジェクトに保存されているSHA1ハッシュgit ls-tree)(で返されるファイルの内容のSHA1ハッシュが一致しませんsha1sum) $ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum de20247992af0f949ae8df4fa9a37e4a03d7063e - gitはファイルハッシュをどのように計算しますか?ハッシュを計算する前にコンテンツを圧縮しますか?
124 git  hash  sha1  checksum  git-hash 

5
MD5ハッシュの計算は、SHAファミリー関数よりもCPUに負荷がかかりませんか?
MD5ハッシュの計算は、「標準」のラップトップx86ハードウェアのSHA-1またはSHA-2よりもCPU負荷が少ないですか?特定のチップに固有ではなく、一般的な情報に興味があります。 更新: 私の場合、ファイルのハッシュを計算することに興味があります。ファイルサイズが重要な場合は、300Kと仮定します。
115 hash  cryptography  md5  sha1  sha2 

10
SHA-1だけでなく、JavaのキーツールからMD5フィンガープリントを取得するにはどうすればよいですか?
アプリケーションでGoogleマップを使用したいので、デバッグ証明書のMD5フィンガープリントが必要です。私は以下を試しました: (ここでは、binフォルダーのC:\ Documents and Settings \ Administrator.androidからdebug.keystoreファイルをコピーしました) C:\Program Files\Java\jdk1.7.0\bin>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android しかし、次の結果を得ました: androiddebugkey, May 27, 2011, PrivateKeyEntry,Certificate fingerprint (SHA1): "some code" ただし、それはMAP APIキーを取得するために機能していません。SHA1はMD5と同じですか? MD5証明書を取得するにはどうすればよいですか?

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 

4
bashのHMAC-SHA1
HMAC-SHA1ハッシュを生成するbashスクリプトはありますか? 次のPHPコードに相当するものを探しています。 hash_hmac("sha1", "value", "key");
95 bash  sha1  hmac 

6
C#でのSHA1アルゴリズムによるハッシュ
をbyte[]使用してSHA1アルゴリズムを使用して、指定された配列をハッシュしたいと思いSHA1Managedます。ハッシュはユニットテストから来ます。 予想されるハッシュは(大文字と小文字が区別されます)です。byte[]0d71ee4472658cd5874c5578410a9d8611fc9aef どうすればこれを達成できますか? public string Hash(byte [] temp) { using (SHA1Managed sha1 = new SHA1Managed()) { } }
86 c#  hash  byte  sha1  hashcode 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.