Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SHA256, Ilość możliwych kodów
xurexPL
post 18.01.2016, 22:03:27
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2016

Ostrzeżenie: (0%)
-----


Witam.
Ostatnio trochę poczytałem na temat sha256 i sobie pomyślałem, że skoro z każdego komputera wychodzi ten sam hash (np. dla wyrazu pies - 0f2907ce9dfc41381d6039cd054f8cb33c4ab2f6520210035e2a32b04bc2b7d3) to musi być jakiś system (mimo to, że zmiana jednej literki daje zupełnie coś innego smile.gif)
Ale nie to pytanie nurtuję mnie najbardziej. Jest inne, a mianowicie:

Z tego co czytałem - da się wygenerować hash dla każdego słowa, ciągu liter itd.
Ale skoro hash ma tylko 64 znaki, to jakim cudem jest wstanie przedstawić dowolne kliknięcia na klawiaturze?
Gdyby generować hash dla wyrazu pies, a następnie wygenerować hash hashu wyrazu pies i z każdym kolejnym robić to samo, "to po pewnym czasie" wygenerujemy więcej kodów, niż jest możliwości.
A więc stąd moje pytanie: Co się wtedy stanie? Czy istnieje możliwość, że dwa "wyrazy" mają taki sam hash?
Bardzo proszę o odpowiedź, jeśli ktoś jest w stanie mi takowej udzielić smile.gif

Pozdrawiam.
Go to the top of the page
+Quote Post
Crozin
post 18.01.2016, 22:13:37
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jak zauważyłeś ilość możliwych danych jest właściwie nieskończona, a ilość możliwych kombinacji (wyników) dla SHA-256 to dokładnie 2^256 (duuuuużo) czyli liczba skończona. Innymi słowy, tak jak w przypadku każdej innej funkcji skrótu istnieje nieskończenie wiele par, takich, że:
Kod
HASH(a) = HASH(b)


Ten post edytował Crozin 18.01.2016, 22:17:03
Go to the top of the page
+Quote Post
xurexPL
post 18.01.2016, 22:30:53
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2016

Ostrzeżenie: (0%)
-----


Nie zbyt rozumiem, ale z logicznego punktu widzenia ilość kombinacji to:
64 znaki i w każdym z nich dowolny znak,
czyli kodując każdą z możliwych kombinacji mających 64 znaki i na każdym miejscu dowolny znak wyjdzie: liczba hasy sha256 = liczba naszych 64 znakowych zdań.
Jeśli "pewien" komputer by to obliczył stosunkowo szybko to wszystkie kombinacje zostałyby wykorzystane i tworzenie nowych hasy było by po prostu nie możliwe.
I co się stanie gdy ktoś wygeneruje hash np. literki a? Skoro każdy hash został już "zajęty" przez n ciągów 64 znaków to jaki hash przypadnie literce a?
Czy literka a będzie musiała dzielić hash z inną kombinacją znaków?

Skoro ilość możliwych kodów sha256 to 2^256, a sam kod składa się z 64 znaków, to dla ciągu składającego się z 64 znaków wynik również wyniesie 2^256.
Tylko, że zawsze można wygenerować hash dla literki A i już wtedy dla 2^256 możliwości będzie użytych 2^256, a nie 2^256 + 1 (gdzie 1 oznacza hash dla literki A), bo wtedy byłby to paradoks smile.gif
Go to the top of the page
+Quote Post
com
post 18.01.2016, 22:31:08
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


nikt Ci nie odpowie na pytanie czy a dzieli swój hash z czymś innym, ale tak jak napisał Crozin istnieje nieskończenie wiele par, którym dopasujesz jeden hash do drugiego bo będzie taki sam.
Go to the top of the page
+Quote Post
xurexPL
post 18.01.2016, 22:32:33
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2016

Ostrzeżenie: (0%)
-----


To dzięki za odpowiedź. smile.gif
Go to the top of the page
+Quote Post
com
post 18.01.2016, 22:48:34
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


żebyśmy się dobrze zrozumieli, nie chodzi o to ze nie chcę, tylko nie jesteś wstanie tak z marszu podać takiej sumy która daje ten sam hash dla rożnych payloadów i o to w tych funkcjach hasujących chodzi smile.gif
Go to the top of the page
+Quote Post
redeemer
post 18.01.2016, 22:57:30
Post #7





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Dodam tylko, że gdy funkcja skrótu tworzy taki sam hash dla różnych danych wejściowych to nazywa się to kolizją.

https://pl.wikipedia.org/wiki/Kolizja_(kryptografia)
https://en.wikipedia.org/wiki/Collision_(computer_science)


--------------------
Go to the top of the page
+Quote Post
darko
post 18.01.2016, 23:03:51
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


A znajdowanie kolizji, pozwala np. autoryzować się w systemach, które sprawdzają jedynie rezultat funkcji skrótu bez tzw. soli, innymi słowy, można znaleźć taki ciąg znaków, który po przemieleniu przez daną funkcję skrótu wygeneruje identyczny hash i umożliwi np. zalogowanie się w jakimś starszym systemie.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
xurexPL
post 18.01.2016, 23:15:08
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2016

Ostrzeżenie: (0%)
-----


Już wszystko rozumiem - dziękuję wszystkim za odpowiedzi smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 14:01