Feedback

C# - HashableElement

Veröffentlicht von am 31.01.2008
(1 Bewertungen)
Hier mal ne kleine Klasse die als Denkanstoß dienen soll wie man eine klasse hashen kann,
mit Hilfe des MD5Ignore Attributes kann man einfach die Property aus der Hashwerterstellung rausnehmen.
Exemplarisch wird hier die Version aus der Hasherstellung rausgenommen.
GFU-Schulungen  [Anzeige]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Security.Cryptography;

namespace DotNetSnippets
{
    internal class MD5Ignore : System.Attribute
    {
    }
    
    internal class HashableElement
    {
        private Guid id;
        private DateTime creation;
        private string user;
        private string currentValue;
        private Version version;

        public HashableElement()
        {

        }
        /// <summary>
        /// Beschreibung: 
        /// </summary>
        [MD5Ignore]
        public Version Version
        {
            get
            {
                return version;
            }
            set
            {
                version = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public string Value
        {
            get
            {
                return currentValue;
            }
            set
            {
                currentValue = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public string User
        {
            get
            {
                return user;
            }
            set
            {
                user = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public DateTime Creation
        {
            get
            {
                return creation;
            }
            set
            {
                creation = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public Guid Id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }

        internal string GetCheckSum()
        {
            List<PropertyInfo> properties = new List<PropertyInfo>(this.GetType().GetProperties());
            List<PropertyInfo> validProperties = new List<PropertyInfo>(properties.FindAll(delegate(PropertyInfo any)
            {
                return (any.GetCustomAttributes(typeof(MD5Ignore), true).Length == 0);
            }));
            string checkSumBase = string.Empty;
            foreach (PropertyInfo pInfo in validProperties)
            {
                checkSumBase += String.Format("{0} / ",pInfo.GetValue(this, null).ToString());
            }



            byte[] data = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(checkSumBase));

            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            return sBuilder.ToString();
      
         

        }

        private string GetMd5Salt()
        {
            return "exampleSalt";
        }
	
    }
}

Abgelegt unter MD5, Checksum, ComputeHash, Attribute.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!