![]() |
![]() ![]() |
![]() |
![]()
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 ![]() 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ć ![]() Pozdrawiam. |
|
|
![]()
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 |
|
|
![]()
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 ![]() |
|
|
![]()
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.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
To dzięki za odpowiedź.
![]() |
|
|
![]()
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
![]() |
|
|
![]()
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) -------------------- |
|
|
![]()
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.
|
|
|
![]()
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
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 14:01 |