web-dev-qa-db-ja.com

SHA512はどのようにして長い文字列を短い文字列にすることができますか

このランダムで非常に長い文字列がどのようになっているのだろうか

€£$€@]}$€{[$£}]£[€€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hXC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpb€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubh€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]

このはるかに短い文字列に変えることができます

bb90e8b58596c55070ee88b25ff01627ab0c227cd11d6f876af9e81a0cd12e9d8a1ebce3af5b0fd8098ac3946a590c55ebe890066db6403cb0ee324c6edf9f3d

このdosentは私には意味がありません。 sha512で2つの文字列を同じにすることはできますか?ストリング1とストリング2とsha512がハッシュされているなど、それらは同じですか?

1
user3524823

非常に基本的に、 ハッシュ関数 (SHA512など)は可変長の入力(出力ハッシュよりも短い、長い、または同じ長さであり、最大サイズがある場合とない場合があります)を取ります。ハッシュ関数がどのように機能するかによって決定されます)、さまざまな手順を通じて、その入力を使用して、ハッシュ関数の内部状態を予測可能な(決定論的)方法で変更します。もう一方の端では、入力がなくなると、ハッシュ関数の内部状態(またはその一部)が読み取られ、場合によってはさらに処理されて、ハッシュ関数の出力として配信されます。その出力は、入力データの「ハッシュ」と呼ばれます。

ハッシュ関数は 一方向性関数トラップドア関数とも呼ばれます;つまり、次のように設計されています。入力が与えられた場合の出力の計算は簡単ですが、入力が出力よりも小さいか同じサイズの場合でも、出力が与えられた場合の入力を計算することは不可能です。

出力ハッシュは基本的に固定長です。これは、ハッシュ関数の内部状態(およびその状態を出力用に後処理した結果)のサイズが知られています。正確な出力ハッシュ長は、ハッシュ関数の内部に適切に適合し、必要なレベルのセキュリティを提供するように選択されます。 MD5、RIPEMD160、SHA-1などの一部のハッシュ関数には、固定サイズの出力があります。 SHA-2やSHA-3のような他のものは、ハッシュ関数を使用してシステムの特定のニーズに応じて異なる長さの出力を提供できます。

ハッシュ関数への2つの異なる入力が同じ出力ハッシュを生成する可能性があります(そして可能性さえあります)。nビットの出力と2つのランダム入力の場合、これは平均して2を試した後に発生します。n/ 2 組み合わせ、そしてそれはあなたが2を試した時までに起こることが保証されていますn+1の異なる入力:最悪の(または最良の)場合、2つのそれぞれn 入力は、2つのセットから一意の出力を提供しますn 可能な出力なので、もう1つの入力を試みる場合は、すでに計算された出力の1つと一致する必要があります。これは ハッシュ衝突 と呼ばれます。 SHAハッシュのファミリーなどの暗号化ハッシュ関数の目的は、そのような衝突を不可能にしないことです(ハッシュを完全に拡張することなく)入力のサイズ。これは、ハッシュのポイントを否定するものであり、数学的には不可能です)。むしろ、そのような入力を見つけるのを非常に困難にします。

findingの衝突を2よりも大幅に高速化できるハッシュ関数n/2 2にn 操作(攻撃の正確な方法によって異なります。主に、いわゆる preimage および birthday 攻撃について詳しく知りたい場合は検索します)は、一般に暗号化のために壊れていると見なされますアプリケーション。これが、 SHA-1が2014年頃にTLS証明書のWebブラウザでの非推奨に向けて追跡を開始した理論的に実行可能な攻撃が2012年に知られるようになった 、そして古い主力製品である理由MD5は、ほとんどすべての暗号化アプリケーションでひどく壊れていると見なされています。

また、SHA512などのハッシュ関数の出力は、質問で示す16進文字列ではないことに注意することも重要です。これは、実際のハッシュの1つの表現であり、64バイト(512ビット)のバイナリ値です。バイナリ形式、Base64エンコード形式、またはその他の表現で保存することもできます。

1
a CVn

A ハッシュ関数はアプリケーションですつまり Aと呼ばれる大きなグループ内の任意の番号、Bと呼ばれる別の番号のグループから取得された別の番号に関連付けられるもの。

数学では、あなたはアプリケーションを持つことができます

  1. グループAにBより多くの要素が含まれている場合。

  2. 2つのグループに同じ数の要素が含まれている場合。

  3. グループAに含まれる要素がBよりもはるかに少ない場合。

ハッシュ関数はケース1ですつまりグループAには、グループBよりもはるかに多くの要素が含まれています。

グループAの要素はmessages、グループBの要素はhashesと呼ばれます。

あなたが心配しているのは、多くの異なるメッセージが同じハッシュを持っていることは確かであるという明白な推論だと思います。多くの人が考えていることは、ハッシュが署名のようなものである場合、2つ以上のメッセージが同じ署名を持っているのはどうしてですか?銀行で同じことが起こった場合、それは惨事になります。このプロパティ(同じハッシュを持つ)は衝突と呼ばれます。

ハッシュの別のプロパティがあるため、これはそうではありません。ハッシュ付きのメッセージが与えられた場合、同じハッシュを持つ別のメッセージを見つけることは、計算上実行不可能(=非常に困難)です。

これは次のように言っていないことに注意してください。完全に不可能です衝突が存在する必要があることを確認したためです。上記のプロパティは、それが非常に難しいと言っているだけです。どれくらい難しいですか?今日存在する最も強力なコンピューターが最高のコードで動作するように、物事は適切なハッシュで配置されます(そして、SHA2は確かに優れたハッシュです)宇宙の年齢 (= 12億年)衝突を見つけるために。十分安全なようです。

ハッシュには非常に優れた別の特性があり、なぜ頻繁に使用されるのかを説明するのに役立ちます。例としてパスワードを取り上げましょう。パスワードはオープンテキストではなくPCに保存されます。PCはパスワードのハッシュを保存するため、パスワードを入力すると、比較されるのは2つのパスワードではなく、2つのハッシュです。では、私のパスワードがMyPasswordであると仮定しましょう。そして、泥棒は次のように推測しようとします。 10文字のシーケンスを取ります(最初のシーケンスならどれでもかまいません。Thisisascaを使用します。次に、ハッシュが(公に)にできるだけ近い文字が見つかるまで、最初の文字(この場合はT)を変更します。利用可能)実際のパスワードのハッシュ。

このようにして、攻撃者は私のパスワードを一度に1文字ずつ識別したいと思うかもしれません。これが銀行強盗が強盗映画で行うことであることに注意してください。彼らは一度に1桁ずつ数字を変更するときに、クリックを聞いてパスワードを識別します。

まあ、これはハッシュでは不可能です。ハッシュの重要な特性の1つは、ほぼ等しいメッセージでさえ、実際には完全に異なるハッシュを持っているということです。このように、銀行強盗のように、一度に1文字だけ推測することはできません。

数学的な用語では、これは大きなリアプノフ指数と呼ばれます。

1
MariusMatutiae

定義上、SHA512ハッシュは、元のデータのサイズに関係なく512ビット長です。より詳細な説明については、これを読むことができます ウィキペディアの記事 ハッシュ関数とは何かを説明しています。

SHA512は 完全なハッシュ関数 ではないため、数学的には可能ですが、スタックオーバーフローに関するこの他の 質問 の回答で説明されているように、2つの異なるデータが同じSHA512ハッシュを生成する可能性はほとんどありません。 。

0
Chris