ich für eine Implementierung des CRC-Algorithmus von Microsoft OfficeIst der CRC-Algorithmus von Office implementiert in C#
http://msdn.microsoft.com/en-us/library/dd922675.aspx
Ist es bereits implementiert irgendwo definiert suchen?
ich für eine Implementierung des CRC-Algorithmus von Microsoft OfficeIst der CRC-Algorithmus von Office implementiert in C#
http://msdn.microsoft.com/en-us/library/dd922675.aspx
Ist es bereits implementiert irgendwo definiert suchen?
Ich könnte mich irren, aber ich denke, wenn Sie Ihre Suche verfeinern, um nach Microsoft Office CRC SALT zu suchen, werden Sie mehr Glück haben.
Kurz gesagt sollte der CRC-Algorithmus derselbe wie jeder andere sein, aber manchmal haben Programme ihren eigenen SALT, um den Hash-Algorithmus zu "würzen".
Nicht getestet, aber 15 Minuten und der Büroartikel schlägt vor, dass dies den Trick tun sollte. Da die ursprüngliche Quelle es dem Aufrufer ermöglicht, den Algorithmus mit dem gewünschten Anfangswert zu säen, gibt es keine Garantie dafür, dass die Ergebnisse übereinstimmen, was Sie suchen: MS Office könnte die CRC-Berechnung mit 32 zufälligen Bits initiieren Entropie. Nichts sagt, dass die Berechnung mit einem Anfangswert von 0 gesetzt werden soll.
public class MsoCrc32
{
private const int BUFFER_SIZE = 4096 ;
private static readonly uint[] cache ;
public uint Value { get ; private set ; }
public void Add(byte[] bytes)
{
foreach (byte octet in bytes)
{
uint i = (Value >> 24)^octet ;
Value <<= 8 ;
Value ^= cache[i] ;
}
return ;
}
public void Add(Stream s)
{
byte[] buffer = new byte[BUFFER_SIZE] ;
int bufl = 0 ;
while ((bufl=s.Read(buffer,0,buffer.Length)) > 0)
{
Add(buffer) ;
}
return ;
}
public MsoCrc32() : this(0)
{
}
public MsoCrc32(int value)
{
this.Value = (uint) value ;
}
static MsoCrc32()
{
cache = InitCache();
return ;
}
private static uint[] InitCache()
{
uint[] cacheInstance = new uint[256] ;
for (uint i = 0 ; i < cache.Length ; ++i)
{
uint value = i << 24 ;
for (uint j = 0 ; j < 8 ; ++j)
{
value <<= 1 ;
if (0x80000000 == (value&0x80000000))
{
value ^= 0xAF000000 ;
}
}
value &= 0xFFFF0000 ;
cacheInstance[i] = value ;
}
return cacheInstance ;
}
}
Benötigen Sie Quellcode der Implementierung oder nur die Möglichkeit, die Prüfsumme von C# zu berechnen? –
Quellcode ist gut, aber ich kann eine andere Bibliothek verwenden. – user542393