public static byte[] Deserialize(ContentIdentifier Identifier, Guid ApplicationID, DirectoryInfo dInfo)
        {
            Rfc2898DeriveBytes pwdGen =
                new Rfc2898DeriveBytes(Identifier.CombinedID, ApplicationID.ToByteArray(), 1000);

            RijndaelManaged rjn = new RijndaelManaged();

            string dir = dInfo.FullName;

            using (ICryptoTransform eTransform = rjn.CreateDecryptor(pwdGen.GetBytes(32), pwdGen.GetBytes(16)))
            {
                using (FileStream ms = new FileStream(Path.Combine(dir, Identifier.CreateItemIDString()), FileMode.Open))
                {
                    using (CryptoStream cs = new CryptoStream(ms, eTransform, CryptoStreamMode.Read))
                    {
                        int len = (((cs.ReadByte() | (cs.ReadByte() << 8)) | (cs.ReadByte() << 0x10)) | (cs.ReadByte() << 0x18));

                        byte[] data = new byte[len];
                        cs.Read(data, 0, data.Length);

                        return data;
                    }
                }
            }
        }