回答編集履歴

2

追記

2016/06/28 18:38

投稿

syuilo
syuilo

スコア393

test CHANGED
@@ -3,3 +3,27 @@
3
3
 
4
4
 
5
5
  もし仮に戻せたとしたら、じゃあ何のためにハッシュ化したのか?ということになってしまいます。
6
+
7
+
8
+
9
+ ものすごく大雑把にハッシュというものを説明すると、ハッシュとは、「入力された文字列を1個おきに抜かした文字列を生成しよう」などというもの(とそれによって生成されたもの)なのです。
10
+
11
+ つまり、「あいうえお」が入力されたら「あうお」が出力され、「かきくけこ」だったら「かくこ」です。
12
+
13
+ ですから、「あうお」というハッシュから元の文字列を復元することは出来ないのです。入力が「あいうえお」でも「あきうけお」でも「あしうせお」でも全て「あうお」になるからです。よって「あうお」という文字列を見て元の文字列が何だったかなんて分からないのです。
14
+
15
+
16
+
17
+ 実際のハッシュはもっと複雑なルールによって計算されていますが、とにかく元の文字列の情報は失われています。
18
+
19
+
20
+
21
+ しかし、同じ入力に対しては常に同じ出力なので、それを利用してパスワードなどの認証が実現されています。
22
+
23
+ ハッシュ化しておけば、パスワードが一致しているか確認できつつ、パスワードが何かは本人以外分からない、ということが実現できます。たとえばデータベースがクラックされてパスワードが流出したとしても、ハッシュ化されていれば、クラッカーもそれから元のパスワードが何だったかを知ることは出来ません。
24
+
25
+ もちろん、そのハッシュ化されているパスワードを、例えばログインページのパスワード欄に入力しても、それがさらにハッシュ化されるだけですので、やはりログインは成功しません。
26
+
27
+
28
+
29
+ …というセキュリティの余談でした。

1

追記

2016/06/28 18:38

投稿

syuilo
syuilo

スコア393

test CHANGED
@@ -1 +1,5 @@
1
1
  ハッシュは非可逆です。元に戻すことは出来ません。
2
+
3
+
4
+
5
+ もし仮に戻せたとしたら、じゃあ何のためにハッシュ化したのか?ということになってしまいます。