public object NullSafeGet(IDataReader Reader, string[] Names, object Owner)
        {
            var StringToDecrypt = NHibernateUtil.String.NullSafeGet(Reader, Names[0]);
              Salt = (string) NHibernateUtil.String.NullSafeGet(Reader, Names[1]);

              var DecryptorToUse = new CryptographyFactory().CreateDecryptor();
              return DecryptorToUse.Decrypt((string) StringToDecrypt, Salt);
        }
        public void NullSafeSet(IDbCommand Cmd, object Value, int Index)
        {
            if (Value == null) {
            NHibernateUtil.String.NullSafeSet(Cmd, null, Index);
            NHibernateUtil.String.NullSafeSet(Cmd, null, ++Index);
            return;
              }

              var UnencryptedMsg = (string) Value;
              var Factory = new CryptographyFactory();
              var EncryptorToUse = Factory.CreateEncryptor();

              if (string.IsNullOrEmpty(Salt))
            Salt = EncryptorToUse.GenerateSalt();

              var EncryptedMsg = EncryptorToUse.Encrypt(UnencryptedMsg, Salt);

              ////Set the values to persist
              NHibernateUtil.String.NullSafeSet(Cmd, EncryptedMsg, Index); //Save encrypted value
              NHibernateUtil.String.NullSafeSet(Cmd, Salt, ++Index); //Save Salt
        }