Dator > hur man beräknar CRC32 kontrollsummor

  • hur man beräknar CRC32 kontrollsummor


  • Beräkna en kontrollsumma för en fil började i början av datoranvändning. Det hjälper till att besvara den grundläggande frågan : är denna fil den jag tror? Är detta filen skadad eller är det exakt samma som den var innan ? Den grundläggande logiken är att genom att lägga upp alla dem i den binära representationen av filen , kan du få ett nummer som du kan lagra för senare . När du vill vara säker på att filen är samma beräknar du kontrollsumman igen . Om den nya och gamla kontrollsummor är samma , är filen samma , om inte , det är annorlunda eller korrupta . . Det finns många algoritmer för att beräkna kontrollsummor , varav en är den CRC32 algoritmen
    1
    Kopiera och klistra in följande kod i en C # klass ärende:
    using System;
    hjälp System. Security. Cryptography ;

    public class CRC32 : HashAlgorithm {
    offentlig konst UInt32 DefaultPolynomial=0xedb88320 ;
    offentlig konst UInt32 DefaultSeed=0xffffffff ;

    privat UInt32 hash ,
    privata UInt32 utsäde ,
    privat UInt32 [ ] tabellen ,
    privat statisk UInt32 [ ] defaultTable ;

    offentliga CRC32 () {
    bord=InitializeTable ( DefaultPolynomial ) ,
    utsäde=DefaultSeed ,
    initialize ( ) ; }


    offentliga CRC32 ( UInt32 polynom , UInt32 utsäde ) {
    bord=InitializeTable ( polynom ) ,
    detta . utsäde=utsäde ,
    initialize ( ) ; }


    offentliga åsidosätta void initialize ( ) {
    hash=utsäde ,
    }

    skyddade åsidosätta void HashCore ( byte [ ] buffer , int start , int längd ) {
    hash=CalculateHash ( tabell , hasch , buffert , start , längd ) ; }


    skyddade åsidosätta byte [ ] HashFinal () {
    byte [ ] hashBuffer=UInt32ToBigEndianBytes ( ~ hash ) ;
    this. HashValue=hashBuffer ;
    återvända hashBuffer ;
    }

    offentliga åsidosätta int HashSize {
    få {return 32 ; } }


    public static UInt32 Beräkna ( byte [ ] buffer ) {
    retur ~ CalculateHash ( InitializeTable ( DefaultPolynomial ) , DefaultSeed , buffert , 0 , buffert .
    Kopiera och klistra in följande kod i de viktigaste slinga av ditt program :
    CRC32 CRC32=new CRC32 () ;
    String hash=String. Empty ;

    använder ( FileStream fs=File. Open ( " c : \ \ minfil. txt " , FileMode. Open ) )
    foreach ( byte b i crc32. ComputeHash ( fs ) ) hash +=b. ToString ( " x2 " . ) ToLower () ;

    Console. WriteLine ( " CRC -32 är {0 } " , hasch ) .
    3
    Ändra värdet " c: \ \ minfil. txt " ovan till den fil som du vill beräkna kontrollsumman
    4
    Kör ditt program för att se de beräknade CRC32 kontrollsumma för filen som du angett. .
     

    tips och varningar


     

    • Du kan beräkna kontrollsumman för en enkel sträng genom att helt enkelt passerar strängen till ComputeHash metod i stället för en hel FileStream .
    8 1 4 8 3 5


Previous:nothing Next:hur man skriver källkod





Relaterade artiklar


  • hur man kan fånga ett undantag i en statisk block i Java
  • hur man använder en switch fall med intervall i C + +
  • hur man gör saker studsa mot väggarna i Visual Basic
  • DirectX 9 vs 10
  • hur man torkar andmat
  • hur du omdirigerar en webbsida med hjälp av JavaScript
  • hur man skapar en fil i java
  • print tutorial för javascript
  • hur man anropar en lagrad procedur i en SQL -server från VB
  • hur man skapar ett datum från sträng java