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