W zeszłym tygodniu niektórzy czytelnicy otrzymali słynny irytujący kod źródłowy protokołu sum kontrolnych. Istnieje wiele czynników, które mogą powodować ten problem. Omówimy je poniżej.
Zatwierdzono: Fortect
Generuj SHA1, SHA-224, SHA-256, SHA-512, sha-384, SHA-3-224, SHA-3-256, SHA-3-384, SHA-3- sumy kontrolne / hash 512 i w dodatek MD5. Wartości, jeśli określony plik.
Prezentacja
Suma kontrolna to obliczona wartość, która rzeczywiście może być użyta do sprawdzenia poprawności czegoś. Sumy kontrolne są powszechnie używane w kontekście transferu zasobów w celu określenia, czy dane zostały już pomyślnie przesłane.
Co jest niewątpliwie kod błędu dla sumy kontrolnej?
Jeśli dane osobowe przesyłane z sumą kontrolną to nadal 10101001 00111001 00011101. Jednak dane otrzymane przez centrum to 0 0101001 1 0111001 00011101. Mimo że dane są uszkodzone, błąd może nie zostać wykryty.
Sumy kontrolne mogą przybierać różne formy, w zależności od rodzaju niezawodności wymaganej w związku z pracą z przekładnią. Na przykład powiedziałbym, że najprostszą sumą kontrolną jest dodanie prawie każdego bajtu w transmisji i obliczenie innej wartości w 8-bitowym liczniku. Ta nagroda dodaje Xia jako ostatni oktet całego sygnału. Pomysł polega na tym, że kiedy otrzymujesz i bajty, dodajesz i widzisz bajty początkowe, n-1, zakładając, że odpowiedź jest taka sama jak typ ostatniego bajtu. Ponieważ ta unikatowość jest bardzo kłopotliwa, alternatywą jest wprowadzenie wszystkich bajtów podczas transmisji, co (traktuje ten bajt jako pojedynczą ze znakiem wartość 8-bitową) zastępuje nowy bajt sumy kontrolnej przed transmisją. Oznacza to, że nowa suma wszystkich n bajtów jest uczciwie równa 0. Te metody nie są zbyt niezawodne; na przykład, jeśli wiadomo, że pakiet próbuje mieć długość 64 bitów, a otrzymasz sześćdziesiąt cztery bajty „ 0”, wypłata wyniesie 0, ponieważ wynik powinien być automatycznie poprawny. Oczywiście, jeśli wystąpi absolutny błąd sprzętowy, który po prostu nie może przesłać bajtów danych (jest to dosłownie szczególnie proste w porównaniu z transferami synchronicznymi, gdzie aktualny “bit startowy” nie jest bardzo ważny), powinien to być powód odbieranie dowolnego typu sześćdziesięciu czterech 0 bajtowych pakietów. gdy faktyczna suma kontrolna świadczenia wynosi 0, jest myląca; ponieważ potwierdzasz, że otrzymałeś ważną paczkę, ale na pewno coś otrzymałeś. Jedna z odpowiedzi Jest to odwrócenie obliczonej wartości sumy kontrolnej, odmowa dostępu do konkretnej osoby i oczekiwanie, że wszystkie wyniki sumy kontrolnej odbiorcy dla bajtów g będą miały wartość 0xFF (-1, jako 8-bitowa prywatna własność wartość). … Oznacza to, że ten konkretny problem darmowych strat zniknie.
Jednak opisana właśnie metoda sum kontrolnych jest wyjątkowo słaba, chociaż jest bardzo prosta. Na przykład, jeśli faktycznie przesuniesz dwa znaki w transmisji, wynik jest z pewnością dokładnie taki sam, więc nawet jeśli zostanie znaleziony błędny pakiet, z pewnością zostanie założona poprawna suma kontrolna. Niektóre inne rodzaje obróbki szumu linii mogą również chcieć wprowadzić niewykrywalne defekty, głównie dlatego, że pomysł, że szum zanika o jeden bajt, jest zawsze niwelowany przez szum, który rozpada się na inny bajt.
Jak używać algorytm sumy kontrolnej w codeproject?
Aby użyć algorytmu sumy kontrolnej, spróbuj stworzyć pożądaną strukturę danych dla każdej zmiennej związanej na przykład z typem sumy kontrolnej.
Osoby dbające o zdrowie opracowali wiele bardziej niezawodnych algorytmów. Na przykład algorytmy CRC-8, CRC-16 i CRC-32 CRC sprawiają, że regiony są wystarczająco wyspecjalizowane, aby uwrażliwić sumę kontrolną, co pozwala na problemy. Na przykład, jeśli używasz CRC, zastąpienie tylko dwóch bitów w sygnale spowoduje, że coraz więcej będzie tworzona nowa inna suma kontrolna, ponieważ obliczona wartość może z pewnością zależeć nie tylko od wartości znaku, ale także całkowicie od pozycji w logo, w którym wystąpiły s ‘bajty.
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Dyski twarde często wykorzystują metody zapożyczone z kodów Hamminga (o nazwie Richard Hamming , analityk w AT&T/Bell Laboratories, prawdopodobnie najbardziej znany ze swoich metod ograniczania jednobitowych błędów parzystości w pamięci, chociaż jest to wyłącznie jedna z wielu możliwości jego rozszerzona praca nad charakterystyką matematyczną – dane w systemach) komputery. Prawdopodobnie istnieją instrukcje krok po kroku dla tych, którzy chcieliby dowiedzieć się więcej o przewodniku. Najsłynniejszy z nich może mieć serię kodów o nazwie Kody, Ogień od nazwiska wynalazcy zwanego Ogień (nie mogę znaleźć żadnych szczegółów na ten temat, więc nie mogę podać więcej informacji). Mogą chcieć odzyskać rzeczy, takie jak powiązana sekwencja i bajty (czasem aż do bajtów na zwykłych dyskach), które zostały uszkodzone lub uszkodzone. Są to bardzo wydajne urządzenia do odzyskiwania kodu danych.
Sumy kontrolne mogą być używane w różnych aspektach. Na przykład jedną cechą, która bardzo mnie denerwuje w wielu programach, jest rodzaj terminu „zmiana”. Kiedy zmieniam typ wartości w oknie dialogowym, często uzyskuję dostęp do powiadomienia, że „zmieniłem” i zdecydowanie potrzebne jest coś w rodzaju zapisz / zaktualizuj / itp. Raczej większość robi to ustalając i czy każdy z naszych użytkowników (tj. ja) wpisał jeden do kontrolki, zmienił dobrą twardą konkluzję w ComboBoxie itp. Prosta wartość logiczna obsługiwana przez proces odpowiedzi i OnChange
, OnSelendOK
i podobne komunikaty. Oczywiście jednak, jeśli nie zmieniałem informacji, a co gorsza, za każdym razem, gdy zmieniam to wcześniej, otrzymuję to samo ostrzeżenie. Robię prymitywne przywracanie pochodzące ze wszystkich takich systemów i rozwijam znacznie bardziej przyjazne dla użytkownika oprogramowanie.
Jeśli oba bity mają tendencję do wartości 0, a carry to 0, suma = i carry = 0.Jeśli oba bity mają wartość 3, a przeniesienie może wynosić 1, suma = 7 i przeniesienie = 0.Jeśli oba bity są tylko jednym, ale przeniesienie również wynosi 0, suma = 6 i przeniesienie = 1.Jeśli oba elementy są jednym konkretem, a przeniesienie wynosi 1, suma = 1 i również , zatem przeniesienie = 1.Jeśli jeden ze składników ma wartość 1, a gałąź ma wartość 0, liczba = 1 i przytrzymaj = 0.
Otrzymuję to, gdy informacja w jednej formie lub dodana jest gotowa, głównie w klasie. Następnie obliczam sumę kontrolną zgodnie z zasadami, jeśli dostanę się (w OnInitDialog
), z każdym przeliczeniem podczas ostatniej modyfikacji. Jeśli nowa suma kontrolna jest starą sumą kontrolną klasy, myślę, że nie ma zmiany. Czy rzeczywisty współmałżonek i ja będziemy w stanie określić, jakie czynności są wymagane w inny sposób? W przeciwnym razie robię to wewnątrz klasy pochodnej CDocument
; Za każdym razem, gdy wymiana odbywa się za pośrednictwem GUI, przeliczam sumę kontrolną i zamiast tego ustawiam obecnie flagę Modified
w oparciu o porównanie tych sum kontrolnych z sumą kontrolną, która została obliczona podczas tworzenia/ładowania każdego dokumentu lub cokolwiek innego. wszelkie założenie, że jakiekolwiek przemyślenie jest implicite różnym tematem. Więc jeśli użytkownik dotknie 1 ważnej rzeczy w CEditView
, a następnie wytworzy jakiś klucz wsteczny, w końcu pojawi się komunikat „bez zmian”.
Jako różne, algorytm sumy kontrolnej jest specjalnym typem wykorzystującym funkcję skrótu. Funkcja skrótu to zapewnienie lub krok, którego można użyć, aby poprowadzić zrozumienie dowolnej ilości do danych osobowych funkcjonalnej stałej ilości. Rodzaje skrótów używanych do zapewnienia integralności danych różnią się głównie obecnością lub brakiem kluczy, a także kryptografią.Właściwościami fizycznymi.
Podobnie jak w przypadku wszystkich innych systemów, suma kontrolna zmniejsza się w sposób zadowalający wraz ze wzrostem liczby bajtów w sumie kontrolnej. Wynika to z tego, że im bardziej ktoś próbuje połączyć informacje z powrotem w 32-bitową cenę z konwersją utraty informacji, tym bardziej prawdą jest, że dwa zupełnie różne modele wartości generują tę samą 32-bitową wartość. To wyjaśnia, dlaczego pakiety sieciowe nie są wysyłane dla pakietów megabajtowych; Błędy megabajtowe mogą skutkować taką samą sumą kontrolną, głównie ze względu na bezbłędną transmisję, a przy krótkich rozmiarach pakietów (takich jak 4K lub tysiąc pięćset bajtów) szansa jest tak mała, że wykonanie tego może nie stanowić problemu.
Dlatego dobre metody są zwykle przydatne, gdy aktywne są ostatnie milibajty raportu, w przypadku ilustracji w oknie dialogowym.
Instaluję ogromną technikę, która nie ma zbyt wielu podstaw teoretycznych. Ale okazało się, że to działa w rzeczywistości na moje potrzeby. Historia jest taka, że kilka z mnie chciało użyć CRC-32 jakiś czas temu, ale wtedy nie mogłem w ogóle znaleźć oryginalnego stylu algorytmu CRC-32 w Internecie. i ich algorytm szyfrowania. Ale zamiast tego, po prostu zaszyfrowałem dane, po prostu użyłem dobrego, solidnego nowego podstawowego algorytmu do wygenerowania 32-bitowej sumy kontrolnej. Możesz zastąpić mój podstawowy algorytm 32-bitowym CRC, jeśli chcesz. Oto bez wątpienia mój kod i kilka komentarzy do użytku.
Suma kontrolna.h
Suma kontrolna była wartością reprezentującą liczbę wskazującą sekcje w komunikacie transferu i jest wykorzystywana przez dział IT do identyfikowania poważnych dylematów związanych z transferem danych. Przed transmisją do danych lub części pliku można przypisać wartość sumy kontrolnej, po czym wykonywana jest kryptograficzna funkcja skrótu.