예제 #1
0
        public byte[] IV(CMFHeader header, byte[] digest, int length)
        {
            byte[] buffer = new byte[length];
            uint   kidx, okidx;

            kidx = okidx = (uint)(2 * digest[5]);
            for (int i = 0; i != length; ++i)
            {
                buffer[i]  = Keytable[SignedMod(kidx, 512)];
                kidx      += okidx % 13;
                buffer[i] ^= digest[SignedMod(kidx + header.GetNonEncryptedMagic(), SHA1_DIGESTSIZE)];
            }
            return(buffer);
        }