2010-12-28 3 views

Antwort

0

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".

0

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 ; 
    } 

} 
Verwandte Themen