2012-05-24 12 views
6

Niedawno opracowałem grę online dla wielu graczy i działa dobrze. Jest centralny serwer obsługujący połączenia TCP z klientami, a oni zarówno odbierają, jak i wysyłają dane.
Czy istnieje sposób sprawdzenia, czy wysłane dane nie zostały zmodyfikowane, zanim odbiornik je odczyta?
Czy połączenie TCP w jakiś sposób go obsługuje? Jeśli nie, jaki jest najlepszy sposób (bez pytania o kod) do jego wdrożenia?
Teraz wpadłem tych pomysłów:Jak zweryfikować integralność danych między połączeniem klient-serwer?

  • Modyfikowanie danych wysyłanych dodając jakieś sprawdzenia wartości, takiej długości pakietów.
  • Po otrzymaniu pakietu poproś serwer, aby wysłał go ponownie i sprawdzi, czy są one równe.

Szukałem powszechnie używanego rozwiązania, ale nie mogłem znaleźć wiele.
Szyfrowanie powinno być moją ostatnią opcją.

Edit
Dla prostej drodze do osiągnięcia tego celu:

  1. MD5
  2. SH A1
  3. SSL
+5

Zmodyfikowana przez hakera lub przez szumy/błąd? TCP/IP zajmuje się tym drugim, a nie pierwszym. –

+0

Czy mógłbyś wyjaśnić pokrótce, jak to się dzieje? – mastaH

+2

Skopiuj dane i dodaj wartość mieszania do wysyłanych danych. Osoba na drugim końcu powinna sprawdzić, czy hasz pasuje do tej z danych, które otrzymuje. To powinno zająć się błędami szumów. – eboix

Odpowiedz

5

Uzgodniono z Bartem, możesz przyjrzeć się użyciu metody Hash do weryfikacji danych.