@@ -25,7 +25,7 @@ public static void RewriteAsStored(MemoryStream source, Stream target)
2525 data = ms . ToArray ( ) ;
2626 }
2727
28- var crc = Crc32 ( data ) ;
28+ var crc = Crc32 . HashToUInt32 ( data ) ;
2929 var nameBytes = Encoding . UTF8 . GetBytes ( entry . FullName ) ;
3030
3131 // Local file header
@@ -53,22 +53,22 @@ public static void RewriteAsStored(MemoryStream source, Stream target)
5353 var nameBytes = Encoding . UTF8 . GetBytes ( name ) ;
5454
5555 // Central directory header
56- writer . Write ( 0x02014b50u ) ; // signature
57- writer . Write ( ( ushort ) 20 ) ; // version made by
58- writer . Write ( ( ushort ) 20 ) ; // version needed
59- writer . Write ( ( ushort ) 0 ) ; // general purpose flags
60- writer . Write ( ( ushort ) 0 ) ; // compression method: Stored
61- writer . Write ( dosTime ) ; // last mod time
62- writer . Write ( dosDate ) ; // last mod date
63- writer . Write ( crc ) ; // crc-32
56+ writer . Write ( 0x02014b50u ) ; // signature
57+ writer . Write ( ( ushort ) 20 ) ; // version made by
58+ writer . Write ( ( ushort ) 20 ) ; // version needed
59+ writer . Write ( ( ushort ) 0 ) ; // general purpose flags
60+ writer . Write ( ( ushort ) 0 ) ; // compression method: Stored
61+ writer . Write ( dosTime ) ; // last mod time
62+ writer . Write ( dosDate ) ; // last mod date
63+ writer . Write ( crc ) ; // crc-32
6464 writer . Write ( ( uint ) data . Length ) ; // compressed size
6565 writer . Write ( ( uint ) data . Length ) ; // uncompressed size
6666 writer . Write ( ( ushort ) nameBytes . Length ) ; // file name length
67- writer . Write ( ( ushort ) 0 ) ; // extra field length
68- writer . Write ( ( ushort ) 0 ) ; // file comment length
69- writer . Write ( ( ushort ) 0 ) ; // disk number start
70- writer . Write ( ( ushort ) 0 ) ; // internal file attributes
71- writer . Write ( 0u ) ; // external file attributes
67+ writer . Write ( ( ushort ) 0 ) ; // extra field length
68+ writer . Write ( ( ushort ) 0 ) ; // file comment length
69+ writer . Write ( ( ushort ) 0 ) ; // disk number start
70+ writer . Write ( ( ushort ) 0 ) ; // internal file attributes
71+ writer . Write ( 0u ) ; // external file attributes
7272 writer . Write ( ( uint ) headerOffset ) ; // relative offset of local header
7373 writer . Write ( nameBytes ) ;
7474 }
@@ -77,32 +77,17 @@ public static void RewriteAsStored(MemoryStream source, Stream target)
7777 var centralSize = centralEnd - centralStart ;
7878
7979 // End of central directory record
80- writer . Write ( 0x06054b50u ) ; // signature
81- writer . Write ( ( ushort ) 0 ) ; // disk number
82- writer . Write ( ( ushort ) 0 ) ; // disk with central directory
80+ writer . Write ( 0x06054b50u ) ; // signature
81+ writer . Write ( ( ushort ) 0 ) ; // disk number
82+ writer . Write ( ( ushort ) 0 ) ; // disk with central directory
8383 writer . Write ( ( ushort ) entries . Count ) ; // entries on this disk
8484 writer . Write ( ( ushort ) entries . Count ) ; // total entries
8585 writer . Write ( ( uint ) centralSize ) ; // central directory size
8686 writer . Write ( ( uint ) centralStart ) ; // central directory offset
87- writer . Write ( ( ushort ) 0 ) ; // comment length
87+ writer . Write ( ( ushort ) 0 ) ; // comment length
8888 }
8989
9090 // DOS date/time for 2020-01-01 00:00:00
9191 const ushort dosTime = 0 ;
9292 const ushort dosDate = ( 40 << 9 ) | ( 1 << 5 ) | 1 ; // year=2020-1980=40, month=1, day=1
93-
94- static uint Crc32 ( byte [ ] data )
95- {
96- var crc = 0xFFFFFFFFu ;
97- foreach ( var b in data )
98- {
99- crc ^= b ;
100- for ( var i = 0 ; i < 8 ; i ++ )
101- {
102- crc = ( crc >> 1 ) ^ ( 0xEDB88320u & ~ ( ( crc & 1 ) - 1 ) ) ;
103- }
104- }
105-
106- return ~ crc ;
107- }
10893}
0 commit comments