/// <summary>
        ///   /// compares stored hash to Hash generated from user info.
        /// if true, let them through
        /// if false error occurred
        /// </summary>
        /// <param name="FN">First Name</param>
        /// <param name="LN">Last Name</param>
        /// <param name="DOB">Date of Birth</param>
        /// <param name="Cntry">Country</param>
        /// <param name="rgn">Region</param>
        /// <param name="adrs">address</param>
        /// <param name="eml">email</param>
        /// <returns></returns>
        public static bool CheckHashTable(string FN, string LN, DateTime DOB, string Cntry, string rgn, string adrs, string eml)
        {
            int id = FindID(FN, LN);

            string inputString = FN + LN + DOB + Cntry + rgn + adrs;

            byte[]    DataReceived = Encoding.UTF8.GetBytes(inputString);
            byte[]    GeneratedHash;
            VoterInfo hashtable;

            if (id != -1)
            {
                hashtable = ElectionDBClass.RetrieveVoterInfoObject(id);
            }
            else
            {
                return(false);
            }

            DataTable dt = new DataTable();

            byte[] salt = hashtable.Salt;

            //generates a SaltedHash with the datareceived, this is to allow for a comparison between the hash on the database and the new generated hash. A hash generated with key 'A' should always create Hash 'A'. So if  hash 'A' != hash 'B', then then means one of two things: key 'a' != key 'b', or there is an error in logic some where.
            GeneratedHash = GenerateSaltedHash(DataReceived, salt);

            if (CompareByteArrays(hashtable.Hash, GeneratedHash)) //CompareByteArrays compares byte[] Summary: checks if ID's match, if true; generates saltedhash with hash on table.
            {
                return(true);
            }


            return(false);
        }