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. .
Previous:nothing Next:hur man skriver källkod