internal byte[] ReadCluster(int index)
{
long offset = DataOffset + index * (long)ClusterSize;
BinaryReader reader = Disc.Reader;
int read;
lock (reader) {
reader.BaseStream.Position = offset + ClusterIVOffset;
reader.Read(KeyIV, 0, KeyIV.Length);
reader.BaseStream.Position = offset + ClusterDataOffset;
read = reader.Read(ClusterData, 0, ClusterDataSize);
}
ICryptoTransform decryptor = Cypher.CreateDecryptor(Key, KeyIV);
return decryptor.TransformFinalBlock(ClusterData, 0, read);
}