Vorige week ontvingen sommige lezers een geprefereerde bug met de broncode van het specifieke checksum-algoritme. Er zijn een aantal factoren die dit probleem kunnen veroorzaken. We zullen hem of haar hieronder behandelen.
Goedgekeurd: Fortect
Genereer SHA1, SHA-224, SHA-256, SHA-512, sha-384, SHA-3-224, SHA-3-256, SHA-3-384, SHA-3- checksums per hashes 512 en MD5 . Waarden als specifieke informatie.
Presentatie
Een checksum is een berekende waarde die zeker kan worden gebruikt om de geldigheid van een bepaalde te controleren. Controlesommen worden vaak gebruikt in de context van gegevensoverdracht om te bepalen of gegevens zonder twijfel met succes zijn overgedragen.
Wat is altijd de foutcode voor check-checksum?
Als die gegevens die met de controlesom werden verzonden 10101001 00111001 00011101 zouden blijven. De gegevens die door deze bestemming worden ontvangen, zijn echter 0 0101001 1 0111001 00011101. Hoewel de gegevens beschadigd zijn, wordt de fout mogelijk nooit gedetecteerd.
Controlesommen kunnen vele vormen aannemen, afhankelijk van het type betrouwbaarheid dat vereist is in verband met de verzending. Ik zou bijvoorbeeld willen dat de eenvoudigste controlesom is om elke byte in de transmissie veel op te tellen en het laatste specifieke bedrag in een 8-bits teller te berekenen. Deze waarde voegt Xia toe als het laatste octet van de volledige transmissie. Het idee is dat wanneer je n bytes hebt, je de ongelooflijk eerste bytes toevoegt en ziet, n-1, ervan uitgaande dat het antwoord hetzelfde is als het type van de laatste byte. Aangezien dit erg omslachtig is, is een alternatief om alle bytes positief op te tellen tijdens de verzending, wat (beschouwt een specifieke byte als een enkelvoudig ondertekende 8-bits waarde) de checksumbyte vóór verzending verandert. Dit betekent dat de meeste nieuwe som van alle n bytes feitelijk als 0 wordt beschouwd. Deze methoden zijn niet erg betrouwbaar; als het pakket bijvoorbeeld zo bekend is dat het 64 bits lang zal zijn en je krijgt vierenzestig bytes ‘ 0’, dan is de uitbetaling nul, dus het resultaat zou automatisch correct moeten zijn. Natuurlijk, als er een absolute computersysteemfout is die er gewoon niet in slaagt om databytes over te dragen (dit is meestal bijzonder eenvoudig in vergelijking met synchrone overdrachten, waarvan de “startbit” niet erg belangrijk is), is deze benadering de reden voor het ontvangen van eventuele typ vanaf 64 0 byte pakket. wanneer het geldige resultaat van de controlesom 0 is, is dit misleidend; omdat iemand denkt dat u een geldig pakket heeft ontvangen, maar niets heeft ontvangen. Een van de antwoorden Dit is om de berekende controlesom die echt de moeite waard is om te keren, een specifieke persoon ervan af te trekken, en een remedie voor het resultaat van de ontvangercontrolesom voor de v-bytes om 0xFF te zijn (-1, in als een nuttige 8-bits privéwaarde ). … Dit betekent dat dit duidelijke nulverliesprobleem zal verdwijnen.
De zojuist beschreven checksum-methode is echter uiterst gevoelig, ondanks zijn eenvoud. Als u bijvoorbeeld twee karakters in een transmissie omwisselt, is de conclusie precies hetzelfde, zodat zelfs als het verkeerde pakket wordt gevonden, de voldoende controlesom wordt aangenomen. Sommige andere soorten lijntooninjectie willen misschien ook niet-detecteerbare zwakheden introduceren, omdat het idee dat ruis een bepaalde byte wegsterft, teniet wordt gedaan door ruis die de tegenovergestelde byte wegsterft.
Hoe deze te gebruiken checksum-algoritme in codeproject?
Om de checksum-formule te gebruiken, maakt u bijvoorbeeld de gewenste datastructuur voor elke factor van het type checksum.
Mensen die dit belangrijk vinden, hebben een nummer ontwikkeld dat voortkomt uit veel betrouwbaardere algoritmen. De CRC-8, CRC-16 en CRC-32 CRC-algoritmen maken de plaatsen bijvoorbeeld complex genoeg om de controlesom gevoelig te maken, wat over het algemeen problemen oplevert. Als u bijvoorbeeld CRC gebruikt, zal het vervangen van slechts twee baThe-bits in een deel van het bericht resulteren in een nieuwe specifieke controlesom, aangezien de berekende waarde niet alleen afhankelijk kan zijn van de tekenwaarde, maar bovendien van de positie in het logo waar al ‘bytes voorkwamen.
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
Harde schijven gebruiken doorgaans methoden die zijn geleend van Hamming-codes (genaamd